不须要下载安装,即可以在微信好友、微信群之间快速的转发,用户只须要扫码或者在微信里点击,就能够当即运行,有着近似APP的用户体验,使得微信小程序成为全民热爱的好东西~html
同时由于微信小程序使用的是Javascript语法,对前端开发人员而言,几乎是没有学习成本和技术门槛的。对于大部分场景,均可以使用小程序快速开发实现,不管是开发周期仍是开发成本都低的让人笑哭,因此受到了技术开发团队的各类追捧~前端
但若是要在小程序里快速的实现一个即时通信功能,就有点尴尬,由于微信官方提供的只是一个底层的websocket api,要在项目中直接使用,还须要作不少额外的工做,好比首先就须要搭建本身的websocket服务~ git
那有没有简单的方式呢? 固然是有的!web
今天小编就手把手的教您用GoEasy在微信小程序里,最短的时间快速实现一个websocket即时通信Demo。小程序
本demo已经完成了真机下的小程序的测试,完整源代码开源到oschina的码云上,clone后,只须要将代码里的appkey换成本身的common key,就能够体验了, 源码网址:https://gitee.com/goeasy-io/GoEasyDemo-wxapp-Helloworld微信小程序
GoEasy官网(https://www.goeasy.io/)上注册帐号,建立一个应用,拿到您的appkey。api
GoEasy提供了两种类型的appkey:安全
Common key: 便可以接收消息,也能够发送消息,与Subscribe Key最大的区别就是有写权限,能够发消息。适用于有消息发送需求的客户端和服务端开发。性能优化
下载 https://cdn.goeasy.io/download/goeasy-1.0.11.js服务器
import GoEasy from './goeasy-1.0.11';
var self = this; this.goeasy = GoEasy({ host: 'hangzhou.goeasy.io', appkey: "您的appkey", onConnected: function () { console.log("GoEasy connect successfully."); self.unshiftMessage("链接成功."); }, onDisconnected: function () { console.log("GoEasy disconnected.") self.unshiftMessage("链接已断开."); }, onConnectFailed: function (error) { console.log(error); self.unshiftMessage("链接失败,请检查您的appkey和host配置"); } })
根据您在GoEasy后台建立应用时选择的区域,来传入不一样的Host,若是您建立GoEasy应用时,选择了杭州,那么host:"hangzhou.goeasy.io"。选择了新加坡,host:"singapore.goeasy.io"。
若是您的大部分用户都是在国内,建立应用时,记得选择杭州,以便得到更快的通信速度。
var self = this; this.goeasy.subscribe({ channel: "my_channel", onMessage: function (message) { self.unshiftMessage(message.content); }, onSuccess: function () { self.unshiftMessage('订阅成功.'); } });
不少朋友会问channel从哪里来,如何建立,应该传入什么呢?
根据您的业务需求来设定,channel能够为任意字符串,除了不能包含空格,和不建议使用中文外,没有任何限制,只须要和消息的发送端保持一致,就能够收到消息。channel能够是您直播间的uuid,也能够是一个用户的惟一表示符,能够任意定义,channel不须要建立,能够随用随弃。
发送时,须要注意channel必定要和subscribe的channel彻底一致,不然没法收到。
this.goeasy.publish({ channel: "my_channel", message: self.data.message, onSuccess: function () { self.setData({ message: '' }); //清空发送消息内容 console.log("send message success"); }, onFailed: function (error) { self.unshiftMessage('发送失败,请检查您的appkey和host配置.'); } });
本代码源码下载:https://gitee.com/goeasy-io/GoEasyDemo-wxapp-Helloworld
特别强调:
在运行以前,必定要在微信公众号平台配置socket合法域名,不然没法创建链接。具体步骤:
访问https://mp.weixin.qq.com,进入微信公众平台|小程序 -> 设置 -> 开发设置 -> 服务器域名
socket合法域名-> 添加GoEasy的地址: wx-hangzhou.goeasy.io(记得wx-开头)
若您建立GoEasy应用时选择了新加坡区域则添加地址:wx-singapore.goeasy.io
固然能够,任何语言均可以经过调用GoEasy的Rest API发送消息,同时为了你们方便,GoEasy的官方文档里,也准备了Java, C#,NodeJS,PHP,Ruby和Python等常见语言调用REST API的代码,这里获取更多详情:https://www.goeasy.io/cn/doc/server/publish.html
固然能够,您能够经过推送文件路径的方式来实现文件的发送。
按照行业惯例,不论MSN,微信,QQ对于图片和视频,一般的作法都是,只推送文件路径,而不会推送文件自己。你若是有注意的话,当您接受图片和视频的时候,收到消息后,等一下子才能看,就是由于发送的时候,只发送了路径。
小程序官方的websocket API主要是用来与您的websocket服务通信,因此使用小程序websocket的前提是,首先要搭建好您本身的websocket服务,而后与之通信。这是一个纯技术的API,在创建网络链接后,还有不少的工做须要本身来完成,好比:
此以外服务端也有不少工做须要本身完成,有兴趣本身搭建websocket的话,能够参考这篇技术分享《搭建websocket消息推送服务,必需要考虑的几个问题》
而GoEasy是一个成熟稳定的企业级websocket PAAS服务平台,开发人员不须要考虑websocket服务端的搭建,只须要几行代码,就能够轻松实现客户端与客户端之间,服务器与客户端之间的的websocket通讯,不须要考虑性能,安全,高可用集群的问题,只须要全力专一于开发本身的业务功能就行了。
GoEasy已经内置websocket中必备的心跳,断网重连,消息补发,历史消息和客户端上下线提醒等特性,开发人员也不须要本身搭建websocket服务处理集群高可用,安全和性能问题。GoEasy已经稳定运行了5年,支持千万级并发,成功支撑过不少知名企业的重要活动,安全性和可靠性都是久经考验。
从应用场景上来讲,全部须要websocket通讯的场景,GoEasy均可以完美支持:
简单还很差吗?GoEasy从研发的第一天,就把追求API的极简做为咱们的工做重点。严格控制接口的数量,就是是为了下降开发人员的学习成本,其实就是为了让您爽啊!但这并不影响GoEasy完美支持全部的websocket即时通信需求。
GoEasy官网:https://www.goeasy.io