代码之家  ›  专栏  ›  技术社区  ›  Sarfaraz Khan

如何在websocket中处理在线用户

  •  1
  • Sarfaraz Khan  · 技术社区  · 10 年前

    我已经通过websocket协议制作了一个聊天应用程序,现在我的问题是如何处理当前的在线用户,我应该将他们的会话(即用户详细信息,如user_id)存储在hashMap中还是其他一些中?

    1 回复  |  直到 10 年前
        1
  •  0
  •   Anton Sarov    10 年前

    除了存储这些信息之外,我看不到任何其他选项,因为它(很可能)对您的应用程序很重要。假设您需要支持私有消息:您不能只向所有连接的客户端发送消息。

    您应该找到一些保存连接信息的数据结构。可能是某个映射,其中键是会话标识符(或用户名,或某个订单唯一标识符),值是 WebSocket.In WebSocket.out 物体。您甚至可以有两个贴图(一个用于“in”对象,一个用于”out“对象),任何适合您的贴图。然后,您可以向特定的客户机发送消息,也可以仅向其中的几个客户机发送,但不能全部发送。

    您可以使用 public void onReady(WebSocket.In<String> in, WebSocket.Out<String> out) 方法将数据放入地图中。(这里我假设您正在使用Java并使用回调处理WebSocket)

    当然,不要忘记在套接字关闭时清理映射(请查看 in.onClose() 方法)。