socket.io 服务器能否与非 socket.io 客户端通信
Posted
技术标签:
【中文标题】socket.io 服务器能否与非 socket.io 客户端通信【英文标题】:Can a socket.io server communicate with a non-socket.io client 【发布时间】:2017-10-20 17:56:19 【问题描述】:我正在构建一个聊天服务器,它使用自定义协议通过套接字与客户端进行通信。客户端向服务器发送特定的字符串,服务器必须根据这些非标准消息采取适当的行动。我无法更改此协议,也无法访问底层客户端代码。
我的问题是,如果我不知道客户端如何处理它的套接字活动,我可以使用 node.js socket.io 包来为服务器套接字通信提供动力吗?我之所以问,是因为通过阅读 socket.io 文档,每次我通过套接字推送任何内容时,每个操作都会关联一个“事件”。
是否可以从捆绑了此“事件”的服务器向客户端发送非常准确的消息?我最好使用 websockets 包吗?
【问题讨论】:
我知道这不是您要询问的具体技术,但您可能会研究 WebRTC 解决方案 - 您甚至会找到 node.js 聊天服务器教程。 【参考方案1】:socket.io 服务器能否与非 socket.io 客户端通信
没有。 socket.io 服务器既需要 webSocket 协议来启动连接,又需要 socket.io 格式。因此,socket.io 服务器只能与 socket.io 客户端通信,反之亦然。
如果您的聊天客户端使用自定义协议,那么您需要实现一个也使用该自定义协议(无论是什么协议)的 TCP 服务器。
如果您可以修改客户端,那么您可以将其修改为使用 socket.io 客户端,然后您可以通过 socket.io 发送聊天消息,然后您的 socket.io 服务器可以接收这些消息。
客户端向服务器发送特定的字符串,服务器必须根据这些非标准消息采取适当的行动。我无法更改此协议,也无法访问底层客户端代码。
然后,您必须实现一个服务器,该服务器会根据客户端的底层协议使用您的自定义客户端协议。没有其他办法。
我之所以问,是因为通过阅读 socket.io 文档,每次我通过套接字推送任何内容时,都会与每个操作关联一个“事件”。
这就是 socket.io 层的工作方式。它发送消息和(可选)数据。这总是可以用来发送数据,只需声明一个通用的data
消息,然后在另一端监听data
消息。但是,这假设您可以修改客户端和服务器以这种方式工作。如果你不能修改你的客户端使用socket.io协议,那么你就不能使用socket.io。
【讨论】:
谢谢,非常果断的回答。您能否指出我可以使用我自己的协议实现纯 TCP 服务器的库的方向?乍一看,我在想“网”以上是关于socket.io 服务器能否与非 socket.io 客户端通信的主要内容,如果未能解决你的问题,请参考以下文章
/socket.io/socket.io.js 中不提供 Socket.io
节点 js - Socket.io-client 未连接到 socket.io 服务器
android studio连接io.socket:sokect.io-client服务器的条件