我正在构建一个聊天服务器,它使用自定义协议通过套接字与客户端进行通信。客户端将特定字符串发送到服务器,服务器必须根据这些非标准消息采取适当的操作。我无法更改此协议,也无法访问底层客户端代码。
我的问题是,如果我不知道客户端如何处理它的套接字活动,我可以使用node.js socket.io包来支持服务器套接字通信吗?我问,因为,通过socket.io文档阅读,每次我通过套接字推送任何东西时,'event'与每个动作相关联。
是否可以通过捆绑此“事件”从服务器向客户端发送非常准确的消息?我最好使用websockets包吗?
答案 0 :(得分:4)
socket.io服务器是否可以与nonsocket.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。