如何在不同的机器上使用 java websockets?

Posted

技术标签:

【中文标题】如何在不同的机器上使用 java websockets?【英文标题】:How to use java websockets on separate machines? 【发布时间】:2014-11-24 10:55:34 【问题描述】:

我使用 websockets 创建了一个示例聊天应用程序,该应用程序在同一台机器上运行良好。我想在不同的机器上运行客户端和服务器。 但是我很困惑如何在不同的机器上使用 websocket,因为 websocket 的操作(即 onopen、onclose、onmessage 等)是随着相应的事件发生的。 如何在不同的机器上运行 websocket 客户端和服务器?

【问题讨论】:

下定决心。你想使用RMI吗?还是网络套接字?它们不是一回事。 嘿@EJP,我知道这两件事是不同的。 我只想在不同的机器上运行 websocket 服务器和 websocket 客户端。 RMI 是可以在这种情况下使用的解决方案之一,即“在不同的机器上运行服务器和客户端”。但是如果服务端和客户端都使用websocket,我不知道怎么处理。 因此,您的问题与 RMI 无关,提及它只会增加混乱。我建议你澄清你的问题。 很抱歉造成混淆。我只想提出我尝试过的方法。是的,我的主要目标是在单独的机器上运行网络套接字。感谢您让问题更清楚。 【参考方案1】:

在您编写类似以下内容的客户端中:ws://localhost:8080/,将您的 localhost 替换为您要发送命令的不同系统的 IP 地址。

但是两台机器应该在同一个网络上。

【讨论】:

【参考方案2】:

您需要添加一个消息代理(如 RabbitMQ),它将从您的服务器获取消息,客户端将订阅相同的代理并接收从服务器发送的消息。服务器需要使用路由键向代理(在代理上交换)广播消息,并且此路由键将绑定到队列,客户端将使用相同的键(一些常见会话)订阅此交换。

【讨论】:

为什么? Web 套接字已经可以完成所有需要的通信。您无需添加其他技术。 @EJP 为了使您的套接字通信异步且可扩展,您总是需要一个代理。

以上是关于如何在不同的机器上使用 java websockets?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 java.awt.Font.getStringBounds 在不同的机器上给出不同的结果?

如何在不同的机器上设置芹菜工人?

如何使用 git 作为云存储在两台不同的机器上工作?

如何实现Robot框架在两台不同机器上并行测试执行?

如何在同一台机器上使用不同版本的 Qt?

Java RMI - 访问不同机器上的 RMI 注册表对象 - AccessControlException?