我已经通过websocket协议制作了一个聊天应用程序,现在我的问题是如何处理当前的在线用户,我应该将他们的会话(即user_id等用户详细信息)存储在hashMap或其他文件中吗?
除了存储这些信息之外,我看不到任何其他选项,因为它(很可能)对您的应用程序很重要。想象一下,您需要支持私有消息:您不能只将消息发送给所有连接的客户端。
您应该想出一些数据结构来保存您的连接信息。可能是某个映射,其中键是会话标识符(或用户名,或某个唯一标识符),值是一对WebSocket.In
和WebSocket.out
对象。你甚至可以有两个贴图(一个用于"in"对象,一个用于"out"对象),任何适合你的。然后,您可以向特定的客户端发送消息,也可以只向其中几个客户端发送消息但不能全部发送。
您可以使用public void onReady(WebSocket.In<String> in, WebSocket.Out<String> out)
方法将数据放入地图中。(这里我假设您使用的是Java,并通过回调处理WebSockets)
当然,不要忘记在套接字关闭时清理映射(看看in.onClose()
方法)。