如何处理websocket中的在线用户

如何处理websocket中的在线用户,websocket,playframework-2.0,java-websocket,Websocket,Playframework 2.0,Java Websocket,我已经通过websocket协议制作了一个聊天应用程序,现在我的问题是如何处理当前的在线用户,我应该在hashMap或其他文件中存储他们的会话,例如用户id之类的用户详细信息吗?除了存储这些信息之外,我没有看到任何其他选项,因为它可能对您的应用程序非常重要。假设您需要支持私有消息:您不能只将消息发送给所有连接的客户端 您应该提出一些保存连接信息的数据结构。可能是一些映射,其中键是会话标识符或用户名,或者是一些订单唯一标识符,值是一对WebSocket.In和WebSocket.out对象。您甚至

我已经通过websocket协议制作了一个聊天应用程序,现在我的问题是如何处理当前的在线用户,我应该在hashMap或其他文件中存储他们的会话,例如用户id之类的用户详细信息吗?

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

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

您可以使用publicvoidonreadywebsocket.In、WebSocket.Out方法将数据放入映射中。在这里,我假设您正在使用Java并使用回调处理WebSocket


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

现在我正在使用并发hashmap来存储用户会话,我认为可能有更好的方法来存储会话,比如序列化WebSocket,WebSocket.out对象转换为字节并保存在数据库中以供进一步访问。顺便问一下……在ConcurrentHashMap中维护用户会话是否安全,以及在此ConcurrentHashMap中维护多少用户?此映射的大小完全取决于您的应用程序。当然,如果你放了大量的数据,这将需要一些内存空间。但另一方面,考虑将所有这些信息存储到数据库中的情况——你能保证数据库足够快吗???如果你进一步考虑这一点,你就可以实现一些逻辑,你把信息的一部分放在一个数据库中,例如那些没有长时间响应的用户,并把另一部分放在内存中。我理解THNX,我只是想知道XMPP服务器是如何像OpenFi火存储用户会话的,我的意思是用户会话的存储机制是什么?