【问题标题】:Real time chat between users like in social network [Laravel + Node + Redis]社交网络中用户之间的实时聊天 [Laravel + Node + Redis]
【发布时间】:2015-12-24 18:48:06
【问题描述】:

我需要知道如何以安全的方式在 2 个用户之间发送和订阅消息。

例如: user1 在频道上发射 message1user1-2 user2订阅频道user1-2并接收message1

我如何确定user3 不会拦截user1user2 之间的聊天? 我如何确定user3 不会订阅频道user1-2

我正在使用 Laravel 5、Node.js、Redis、Socket.io。 我只是想知道如何确保它的安全。

【问题讨论】:

  • 使用“代理服务器”在用户之间传递消息,在服务器中使用身份验证,如果 user3 注册到 user1-2 聊天,他会收到简单的错误
  • 不明白...你能给我举个例子吗?
  • user1如何获取消息?从服务器开始,服务器需要具有允许或禁止某人获取消息的逻辑。

标签: node.js redis socket.io laravel-5 node.js-connect


【解决方案1】:

User1 向服务器询问 user1-2 的频道名称,服务器生成随机 guid ch-12345 并将其返回给客户端,并添加标记 user1 已引用 ch-12345,user2 也已引用。

SADD user1:channels ch-12345
SADD user2:channels ch-12345

User1 向 ch-12345 发布消息。

ZADD ch-12345 (+new Date()) "Hello!"

用户 2 在登录时向服务器询问可用频道。

SMEMBERS user2:channels

或者服务器通知客户端他有新频道。

PUBLISH user2-new-channel ch-12345

您可以通过以下方式轻松检查 user3 是否可以访问频道

SISMEMBER user3:channels ch-12345 

如果随机 guid 足够大,您将无法强制使用频道名称...

【讨论】:

    猜你喜欢
    • 2018-03-26
    • 2016-07-21
    • 1970-01-01
    • 2023-03-21
    • 2014-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-12
    相关资源
    最近更新 更多