我正在通过 netty websocket 开发聊天服务器。我们的客户端主要是基于浏览器。 发生的事情是,当我刷新浏览器时,它会关闭websocket连接并丢失所有内容,并在再次加载浏览器时创建一个新的套接字。 是否有任何机制可以重新连接我之前在服务器端的websocket会话。
我打算缓存所有用户会话,如果从客户端收到任何连接关闭事件,那么如果服务器收到来自同一客户端的新连接请求(通过cookie id检测),则不会删除等待更多30-60秒的用户会话信息然后用新的会话信息替换。
我的问题是,如果我在服务器接收连接关闭事件时没有删除会话,则通过此会话的通道创建问题进行其他读/写操作。
答案 0 :(得分:0)
我从下面可以理解的是
我的问题是,如果我在服务器接收连接关闭事件时没有删除会话,则通过此会话的通道创建问题进行其他读/写操作。
您的聊天逻辑与频道/频道处理程序对象紧密耦合。
如果你可以将聊天逻辑移动到一个单独的类,我称之为“Session”并在该类中具有onEventXXX回调并且在其上面有聊天逻辑(可能是单独的类链),当有写操作时,使用session.write(...)编写消息。 “会话”必须将其委托给底层渠道。
关闭基础渠道后,您可以将“会话”对象保留一段时间,然后重新附加其新渠道。
要执行此操作,您可能需要创建一个名为“SessionHandler”的单独Netty处理程序并处理通道事件/会话创建。