webman push 使用疑问

软饭工程师

我打算使用webman push 实现一个聊天系统,有些问题不明白,请大家解惑

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,还是写一个离线消息接口,上线后主动查询未读的离线消息?

383 3 1
3个回答

walkor

1、一般不用传token,因为浏览器发起请求服务端会直接拿到session。如果你没用session的话,可以传token
2、一个群聊一个频道
3、单聊每个用户订阅一个自己的频道,给哪个用发消息直接向对应的频道发布消息,发布时带上发布人的id用来区和谁群聊
4、上线主动ajax请求读一遍未读消息

  • 软饭工程师 2024-03-06

    好的,谢谢老大,还有疑问:
    1,关于单聊,每个用户订阅自己的频道就能收到发送给自己的消息,这个我理解了;
    如果要给别人发送消息,是否要订阅对方的频道?
    意思就是a->b,a->c发送消息,a是否需要订阅a->b,a->b这个频道

    2,多个单聊的情况下,聊天列表如何实现,订阅对方的频道并将频道列表作为聊天列表吗?

    3,离线消息处理问题,服务端需要对消息做一些处理,比如当用户下线时,记录发给该用户的消息,记录消息阅读状态,这个并没有找到onmessage,onclose这些事件,请问应该怎么处理

  • walkor 2024-03-06

    1、对于单聊来说,用户a只订阅a的频道,b只订阅b的频道,没必要订阅a-b等频道
    2、频道只做消息推送,和谁在聊天写入数据库,聊天列表从数据库读
    3、webman/push 有webhook,会通知哪个频道下线了,比如a频道下线了就是a用户下线了

tanhongbin

兄弟 应该是刚使用webman呀,有新人来用good

  • 暂无评论
Le

插眼

  • 暂无评论
🔝