【问题标题】:Java Application to "forward" data from TCPSocket to WebSocket?Java应用程序将数据从TCPSocket“转发”到WebSocket?
【发布时间】:2023-03-19 20:34:01
【问题描述】:

我有点困惑,希望有人能给我一些提示。

我需要从 TCPSocket(我无法修改)获取一些数据到 iPad 上“运行”的 HTML5/JavaScript 网站。

几件事,我想我明白了:
- JavaScript 不支持纯 TCPSockets,HTML5 也不支持
- JavaScript 确实支持 WebSockets (var socket = new WebSocket...) o_O
- Java 本身不支持 WebSockets
- 网络的每个边缘都推荐用于 Java WebSocket 实现的“jWebSocket”
- jWebSocket 仍然不像我在我的 Java 应用程序中使用的库,用非常原始的伪代码说:

ClientSocket tcpSocket = new ClientSocket(whatever);

WebSocket webSocket = new WebSocket(whatever);

tcpSocket.connectToTCPServer();
webSocket.acceptClientConnection();

data = tcpSocket.receive();

processedData = processData(data);

webSocket.send(processedData);

对吗?

看在上帝的份上,实现上述内容的最短方法是什么?整个网络都在谈论的 easypeasy Web 2.0 通信在哪里? 老实说,我不必下载并构建整个 jWebSocket-Maven-Projekt,对吗?

提前非常感谢, 安德烈亚斯

【问题讨论】:

  • Java 究竟是如何参与其中的?你的服务器是用 Java 实现的吗?
  • 好吧,我想,Java 可能会提供一种简单的方法来实现这一点。你能推荐点别的吗?

标签: java javascript tcp websocket


【解决方案1】:

如果 Java 实际上不是硬性要求,那么一个简单的解决方案是使用 websockify,它专为 WebSocket 和原始 TCP 套接字之间的代理/桥接情况而设计。 Websockify 是一个简单的 python 服务器。

websockify 解决的挑战之一是,许多浏览器实现尚不支持 WebSocket API 更改以支持二进制数据(如果您连接到常规 TCP 服务器,那么您可能需要能够发送/接收二进制数据)。 Websockify 通过 base64 编码/解码来自 WebSocket 客户端的数据来解决这个问题。包含的 include/websock.js 使发送和接收二进制数据(作为一个普通的 Javascript 字节数组)。请参阅websock.js API

免责声明:我制作了 websockify。

【讨论】:

  • 好吧,这看起来很有趣。由于我也计划在我的项目中使用 nodejs,所以我将看看 websockify.js。在您的实现列表中,您说 websockify 的 nodejs 实现:多个目标:不。我假设这意味着:1 个 TCP-Socket-Connection 但仍然可能有多个 websocket 连接,对吧?
  • 此外,我在调用 var websockify = require('path/to/websockify/other/websockify.js'); 时得到“wsproxy.py [source_addr:]source_port target_addr:target_port”我如何在那里传递参数?
猜你喜欢
  • 2020-08-16
  • 2014-08-02
  • 1970-01-01
  • 2019-07-22
  • 1970-01-01
  • 1970-01-01
  • 2016-12-08
  • 1970-01-01
  • 2013-09-24
相关资源
最近更新 更多