是否可以序列化 WebSocket 连接对象并在另一台服务器上重用它?

nul*_*der 4 php java websocket

我想为我的网站设置负载平衡,因此当您请求 websocket 地址时,它会将您的连接路由到当前请求时间可用资源最多的 WebSocket 服务器。我的网站是一个聊天网站,如果它都在一台服务器上运行,那么使用 WebSockets 更新其他用户的聊天并不是很困难。

假设用户一向 TestUser 发送消息。

User 的连接 ID 为 120,TestUser 的 ID 为 174,现在服务器将查找与用户匹配的连接并获取 ID,然后获取连接,然后将响应发送给 TestUser。

但是,如果两个用户都在两台不同的服务器上,我将他们的连接以序列化形式存储在数据库中,然后将它们设置为变量,我还可以使用该连接吗?

连接是否包含某种身份验证以作为服务器发送消息?如果不是,我可以尝试什么。我不想用单个服务器替换我的负载平衡器。

谢谢!

注意:我列出了 Java 和 PHP,因为我出于自己的原因将这两种语言用于 WebSockets,因为我根据他们喜欢的语言为其他人开发,在我的情况下主要是 Java 和 PHP

eis*_*eis 7

这是不可能的。连接是两方之间的共识,即使用某种端口和协议的通信正在发生和正在进行。如果不存在这种理解,则一端的操作(例如反序列化套接字对象)不会创建一个 - 需要创建一个新连接,这再次建立了这种理解。这意味着 a) 以前关闭的连接对象不再有用,并且 b) 引用现有的实时连接的连接对象在某些其他服务器上没有用,而不是在连接建立的地方。

查看有关序列化套接字线程的更多答案。