1,使用私有频道需要鉴权,如下代码将access_token 传给服务端,在服务端auth接口里面对token进行验证,这样可以吗,或者有更优雅的办法?
var connection = new Push({
url: 'ws://127.0.0.1:3131', // websocket地址
app_key: 'xxxx',
auth: '/plugin/webman/push/auth?token=111111' // 订阅鉴权(仅限于私有频道)
});
2,群聊场景如何实现,新建一个频道,所有客户端订阅这个频道吗?
3,单聊如何实现,a->b 发送消息,a订阅a->b 这个频道才能发消息,b也需要订阅a->b这个频道才能收到消息,每新增一个单聊,都需要新增一个频道吗?这样是否需要一个频道接口?或许有更优雅的办法?
4,a给b发送离线消息,b不在线,服务端将消息存储下来,定时器检测b的状态,b 上线将消息推送给b,还是写一个离线消息接口,上线后主动查询未读的离线消息?
1、一般不用传token,因为浏览器发起请求服务端会直接拿到session。如果你没用session的话,可以传token
2、一个群聊一个频道
3、单聊每个用户订阅一个自己的频道,给哪个用发消息直接向对应的频道发布消息,发布时带上发布人的id用来区和谁群聊
4、上线主动ajax请求读一遍未读消息
好的,谢谢老大,还有疑问:
1,关于单聊,每个用户订阅自己的频道就能收到发送给自己的消息,这个我理解了;
如果要给别人发送消息,是否要订阅对方的频道?
意思就是a->b,a->c发送消息,a是否需要订阅a->b,a->b这个频道
2,多个单聊的情况下,聊天列表如何实现,订阅对方的频道并将频道列表作为聊天列表吗?
3,离线消息处理问题,服务端需要对消息做一些处理,比如当用户下线时,记录发给该用户的消息,记录消息阅读状态,这个并没有找到onmessage,onclose这些事件,请问应该怎么处理
1、对于单聊来说,用户a只订阅a的频道,b只订阅b的频道,没必要订阅a-b等频道
2、频道只做消息推送,和谁在聊天写入数据库,聊天列表从数据库读
3、webman/push 有webhook,会通知哪个频道下线了,比如a频道下线了就是a用户下线了
没太明白:
3、单聊每个用户订阅一个自己的频道,给哪个用发消息直接向对应的频道发布消息,发布时带上发布人的id用来区和谁群聊
文档说明:
客户端间推送仅支持私有频道(private-开头的频道),并且客户端只能触发以 client- 开头的事件。
a如何发送给b消息:a订阅了频道a 如何发送到频道b 按照这个逻辑。
私聊使用私有频道吗 我没太弄明白
兄弟 应该是刚使用webman呀,有新人来用good
插眼
大兄弟,在吗?
没太明白:
3、单聊每个用户订阅一个自己的频道,给哪个用发消息直接向对应的频道发布消息,发布时带上发布人的id用来区和谁群聊
文档说明:
客户端间推送仅支持私有频道(private-开头的频道),并且客户端只能触发以 client- 开头的事件。
a如何发送给b消息:a订阅了频道a 如何发送到频道b 按照这个逻辑。
私聊使用私有频道吗 我没太弄明白
私聊和私有频道没有直接关系。
公有频道可以理解为公共电话号码,谁都知道,可以直接通过公共电话给他发数据。
私有频道可以理解为私人号码,只有有权限的人才知道,安全性更好。
私聊走公有频道和私有频道都可以。
大佬真猛 实时响应,太赞了。
我理一下:
方法1:如果客户端使用js给接口php发送,php在推送,这倒是推送私有 公共频道都可以。这个我能明白。
方法2:如果使用客户端推送(js直推): 看文档只能推送私有频道,a订阅a,不订阅b,这种如何给b发送?
还是说做聊天系统,js发送到php,就用php推送完事。 那客户端推送的场景是什么。
客户端推送
以上例子都是客户端订阅某个频道,服务端调用API接口推送。webman/push 也支持客户端直接推送消息。
注意
客户端间推送仅支持私有频道(private-开头的频道),并且客户端只能触发以 client- 开头的事件。
客户端触发事件推送的例子
var user_channel = connection.subscribe('private-user-1');
user_channel.on('client-message', function (data) {
//
});
user_channel.trigger('client-message', {form_uid:2, content:"hello"});
注意
以上代码给所有(除了当前客户端)订阅了 private-user-1 的客户端推送 client-message 事件的数据(推送客户端不会收到自己推送的数据)。
单聊还是用PHP推送比较好
js直推适合不需要php后端参与的场景,例如不需要记录消息到数据库,不不需要后端其它验证。
例如对战小游戏实时更新坐标,例如聊天室不需要记录历史消息
好的 谢谢!太爱了,赞!!
可以参考https://www.workerman.net/plugin/102
文档,这是官方webman/push的多进程分布式版本,文档方法类似
楼主,请问后端 trigger 如何动态获取私有频道用户id呢?