Android SocketIO的回调功能是SocketIO独有的功能吗?如果是这样,标题是如何形成的?

Android SocketIO的回调功能是SocketIO独有的功能吗?如果是这样,标题是如何形成的?,android,ios,node.js,websocket,socket.io,Android,Ios,Node.js,Websocket,Socket.io,我正在创建一个本机移动项目,它将使用NodeJS上的SocketIO作为通信API 我们希望在本机iOS(或Android)上使用SocketIO的回调功能 然而,我发现的WebSockets的任何客户端实现中都没有回调功能,所以我猜这是SocketIO独有的功能 如果是这样,socketIO使用的有效负载前的报头信息是什么 通过网络,我可以在JSON负载之前看到一些二进制代码,但我不足以分析客户端回调功能是如何完成的,因此我可以在ObjC和Java中复制它。Socket.IO不仅仅是WebSo

我正在创建一个本机移动项目,它将使用NodeJS上的SocketIO作为通信API

我们希望在本机iOS(或Android)上使用SocketIO的回调功能

然而,我发现的WebSockets的任何客户端实现中都没有回调功能,所以我猜这是SocketIO独有的功能

如果是这样,socketIO使用的有效负载前的报头信息是什么


通过网络,我可以在JSON负载之前看到一些二进制代码,但我不足以分析客户端回调功能是如何完成的,因此我可以在ObjC和Java中复制它。

Socket.IO不仅仅是WebSockets,但它将使用许多协议和解决方案,并退回到旧的协议和解决方案,试图建立最可靠和实时的通信层。
它实际上是一堆协议。因此,如果你想与Android或iOS通信,那么考虑一个单一的协议,这将是纯WebSooCts,就像这个:

然后,您需要有用于Android和iOS的本机WebSockets库。尽管这些平台完全不同,但不要期望它们的行为方式与您在node.js中习惯的方式相同。可能会有消息拉取而不是事件驱动(回调)

WebSocket本身是一种基于消息的协议,通过TCP将数据作为完整或部分消息发送,每个消息都包含一些关于消息的数据,如类型、长度、屏蔽等。使用WebSocket不需要深入了解WebSocket

IO在其消息中发送JSON数据,并且只做自己的工作,以确保有整洁且有用的方式来发出和捕获事件

请检查以下几个库:用于iOS(socket.io客户端)或


这些库实际上处理它们的回调,所以您不需要了解WebSocket或Socket.IO在其中的工作原理。

我对Maksims的编辑还没有被接受,所以我只想为其他人提供一个简洁的答案

索克蒂奥 确实有一个对每条消息进行打包的头,因此它需要使用本机SocketIO实现,而不仅仅是WebSocket实现

是一个iOS自带的库,它确实实现了SocketIO,并且还实现了SocketIO可用的非常方便的回调功能

- (void) sendJSON:(NSDictionary *)data withAcknowledge:(SocketIOCallback)function;

我还没有为Android找到相同的实现,如果到12月还没有,我可能会自己创建一个。

我很感激这个答案,但是除了json字符串,你知道SocketIO有效负载中有什么吗?它构建了某种类型的头,它是如何实现回调函数的,我主要感兴趣的是回调函数。回调函数与通过协议发送的实际数据无关,除了事件库的名称之后将触发。回调功能不能仅通过JSON对象或通过网络发送的任何类似数据来实现。但是,快速查看Chrome中的Dev Tools>Network>WebSockets,消息看起来是这样的:
5::{“name”:“lobb”,“args”:[{“users”:2,“match”:4}]}
,其中
lobb
是消息的名称,
args
具有将传递给回调的值数组。当然,回调功能是SocketIO独有的功能,这是我的假设,标题打包是我的问题。仍在尝试找出标题的模式。在chrome中打开DevTools,转到网络选项卡并在下面勾选“WebSockets”,然后您将看到所有消息的所有字符串。因此,您可以简单地解析它。看起来您只需要在第一次
{
剩下的将是纯JSON,因此可以使用最喜欢的JSON解析器进行解析。为什么不使用现成的解决方案,如:?有效负载之前的二进制文件是WebSocket头文件,这些文件决不是特定于Socket.IO的。如果您愿意,可以通过阅读相关的RFC来了解它们,但最好使用一个已经具有k的库现在了解如何解析/构建它们。