微信小程序服务端怎么给用户主动推送信息

微信小程序服务端怎么给用户主动推送信息

有开发者在微信开发者社区提问:

微信小程序,服务端怎么给用户主动推送信息,信息如果改变了的话,就发送推送 但是信息改变是由后台控制的?

针对这个问题,可以尝试使用下websocket来实现微信小程序消息推送功能。

websocket的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。其他特点包括:

建立在 TCP 协议之上,服务器端的实现比较容易。
与 HTTP 协议有着良好的兼容性。默认端口也是 80 和 443 ,并且握手阶段采用 HTTP 协议,因此握手时不容易屏蔽,能通过各种 HTTP 代理服务器。
数据格式比较轻量,性能开销小,通信高效。
可以发送文本,也可以发送二进制数据。
没有同源限制,客户端可以与任意服务器通信。
协议标识符是ws(如果加密,则为wss),服务器网址就是 URL。

要想在微信小程序中使用websocket,不仅微信小程序前端需要实现websocket协议,Server 端后端也需要实现 WebSocket 协议,才能支持微信小程序的 WebSocket 请求。

目前GoEasy提供完整的websocket前后端解决方案,简单的几行代码集成,即可快速搭建微信小程序websocket服务。

下面我给大家简单讲解下如何在微信小程序中使用websocket:

首先需要您进入微信公众平台|小程序 -> 设置 -> 开发设置 -> 服务器域名 选项的 socket合法域名项添加 goeasy的地址: wx-hangzhou.goeasy.io

1、引入GoEasy:

在使用GoEasy提供的websocket服务前,我们需要在小程序配置文件中引入GoEasy.js文件,目前GoEasy提供三种方式的引入,你可以根据实际项目的需求进行选择引入方式。

2、初始化GoEasy:

// 在onLaunch方法里初始化全局GoEasy对象
 this.globalData.goEasy = new GoEasy({
     host: "hangzhou.goeasy.io", //应用所在的区域地址: 【hangzhou.goeasy.io | singapore.goeasy.io】
     appkey: "my_appkey", //替换为您的应用appkey
     onConnected: function() {
         console.log('连接成功!')
     },
     onDisconnected: function() {
         console.log('连接断开!')
     },
     onConnectFailed: function(error) {
         console.log('连接失败或错误!')
     }
 });

经过上面的两步,我们已在微信微信小程序中完成了GoEasy服务的引入。

要想在微信小程序端接收服务端推送过来的消息,我们得现在小程序到设置好接收消息的代码。

3、微信小程序端接收消息:

getApp().globalData.goEasy.subscribe({     
channel: "my_channel", //替换为您自己的channel
onMessage: function (message) {
console.log("Channel:" + message.channel + " content:" + message.content); } });

我们这里的需求是服务端向微信小程序端主动推送消息,所以我们来看看GoEasy是如何处理服务端消息推送的。

4、服务端主动推送消息:

GoEasy提供了丰富的服务端Rest API接口,免去了自行搭建websocket服务器的麻烦。通过GoEasy提供的Rest API接口,你可以方便快捷的推送消息到微信小程序端。

URL:http(s)://<REST Host>/publish

在使用Rest API的过程中,请根据您的应用所在区域,替换<REST Host>,杭州:rest-hangzhou.goeasy.io,新加坡:rest-singapore.goeasy.io。

Method:Post

参数:

参数名字是否必须描述
appkey您的appkey
channel您的目标channel
content推送的消息内容

更多关于Rest API的使用技巧,可以来这里看看:GoEasy服务器发送消息,GoEasy提供了php、java、python等多种服务端语言的支持。

如果你需要微信小程序websocket的demo演示代码,可以注册GoEasy开发者账号,然后在GoEasy控制台联系GoEasy技术支持获取。【立即注册

Comments are closed.