1. channel是什么?
根据您的业务,channel可以是您直播间的id, 也可以是一个用户的id, channel可以为任意字符串(不能包含空格和中文),只要接收端和发送端保持一致,就可以收到消息。一个客户端可以订阅多个channel,channel无需创建,可随用随弃。
2. 如何实现一对一发送?
例如您有user A, user B,如果您希望推送一条消息用户A收到,不希望用户B收到,那您只需要进行2个步骤:
1)用户A的页面订阅channel_user_a,用户B的页面订阅channel_user_b。
2)只需要往channel_user_a上推送消息就可以了,推送后,就只有user A能收到,user B则无法接收。 具体实现中,可以将用户的id或者uuid来作为channel。
3. 如何实现一对多发送?
多个客户端只需要订阅同一个channel,那么不论是服务端还是客户端publish一条消息到这个channel,所有客户端都是可以接收到。
比如:
我们可以让开发团队的所有用户都订阅development_team这个channel,这个时候如果我们往development_team这个channel上发送一条消息,所有开发团队的成员就都可以收到。
4. 如何发送对象和复杂数据?
先将要发送的对象或者复杂的数据封装到一个JSON对象中,然后再转为字符串发送出去。
客户端收到消息后,根据您定义的json对象格式进行解析,然后再完成您的业务逻辑的处理。
5. 一个客户端如何订阅多个channels?
您可以在subscribe接口中传入channels数组来同时订阅多个channel,代码如下:
javascript
var pubsub = goeasy.pubsub;
pubsub.subscribe({
channels: ["channel1","channel2"],//channels数组来同时订阅多个channels
onMessage: function (message) {
//收到消息
console.log("Channel:" + message.channel + " content:" + message.content);// 这里可以根据消息对应的channel来处理不同的业务逻辑
},
onSuccess: function () {
console.log("Channel订阅成功。");
},
onFailed: function (error) {
console.log("Channel订阅失败, 错误编码:" + error.code + " 错误信息:" + error.content)
}
});
您也可以多次调用subscribe接口来订阅增量的channel。一个channel可以被重复订阅,最终收到消息的处理逻辑以最后一次订阅的onmessage回调为准。
6. 服务端是否可以接收消息呢?
目前服务端只有java语言开发的,才能直接在服务端建立goeasy连接并接收websocket消息。参考集成文档:https://docs.goeasy.io/2.x/pubsub/android
如果是其它语言,可以在服务端集成nodejs之后, 再通过nodejs来建立goeasy连接来接收websocket消息
如果有遇到其它问题,欢迎咨询GoEasy官网客服。