【问题标题】:Call Normal Socket from a Web Browser从 Web 浏览器调用普通套接字
【发布时间】:2020-12-16 23:27:26
【问题描述】:

我有一个用 ReactJS 编写的 webapp。

我想要做的是与在本地主机上运行的普通 TCP 套接字进行通信。 (监听请求的设备是 Eftpos 终端)。所以我想发送购买命令并接收它的响应。

如何从我的 web 应用程序与普通 TCP 套接字通信?据我了解,我不能只与 webapp 的 TCP 套接字通信。由于 webapps 只支持不同的 WebSockets。还有什么办法?

【问题讨论】:

  • 来自浏览器还是来自您的网络应用?

标签: node.js reactjs sockets websocket


【解决方案1】:

浏览器中的Javascript可以做http、webSocket和webRTC。浏览器 Javascript(没有包含自己的本机代码的自定义插件)无法进行纯 TCP 连接。

如果您想连接到需要普通 TCP 连接的东西,那么您需要使用 http 或 webSocket 连接到您的服务器,并让您的服务器连接到常规 TCP 套接字,您的服务器可以在它们之间进行转换。这通常被称为代理。

因此,出于本说明的目的,让我们假设您想要连接到使用普通 TCP 套接字的某个服务,并且您需要向它发送文本行并获取文本行作为响应。您的客户端必须在 http 或 webSocket 之间选择浏览器到服务器的传输,所以让我们假设您正在使用 webSocket。事件的顺序可能如下所示:

  1. 浏览器客户端使用 webSocket 连接到您的服务器。
  2. 您的服务器收到传入的 webSocket 连接,因为它知道它将充当使用普通 TCP 套接字的服务器的代理,它代表该用户打开该套接字。
  3. 浏览器客户端通过 webSocket 发送第一个请求。
  4. 您的服务器接收到第一个请求并将其转换为 TCP 套接字所需的任何格式,然后通过 TCP 套接字发送。
  5. 当您的服务器从 TCP 套接字获得响应时,它会将响应转换为 webSocket 数据包并将其发送回客户端。
  6. 客户端通过其 webSocket 连接接收响应。
  7. 随意重复。
  8. 当客户端关闭 webSocket 连接时,服务器将关闭与其他服务器的 TCP 连接。

【讨论】:

    【解决方案2】:

    唯一的方法是代理数据服务器端。

    您可以在服务器端建立 TCP 连接,并通过 Websocket 连接将数据中继到浏览器客户端。

    【讨论】:

    • 您能否详细说明“代理数据服务器大小”的含义
    • 浏览器客户端与服务器建立Web Socket连接,服务器与终端建立连接,服务器双向中继数据。我真的不知道该怎么形容它。
    • 我想我明白了,几乎有一个 Node.JS 服务器在中间运行,将消息回显给对方。
    • 是的,是的,完全正确!
    猜你喜欢
    • 1970-01-01
    • 2012-10-29
    • 2013-08-26
    • 1970-01-01
    • 1970-01-01
    • 2011-05-27
    • 1970-01-01
    • 1970-01-01
    • 2013-01-28
    相关资源
    最近更新 更多