IOAcknowledge 方法不适用于 Android 中的 SocketIO?

Posted

技术标签:

【中文标题】IOAcknowledge 方法不适用于 Android 中的 SocketIO?【英文标题】:IOAcknowledge method is NOT working for SocketIO in Android? 【发布时间】:2016-06-13 17:24:12 【问题描述】:

我正在使用 socketio.jar 来建立 ClientServer 之间的连接。

即从我的 android 设备(客户端)到节点服务器。

因为我能够成功地连接、发送和接收到该服务器的消息。

问题是为什么我在向服务器发送消息后没有从套接字获得任何确认。有一个回调接口 IOAcknowledge 作为参数,它永远不会为我工作/调用。

 socket.emit( "sendMessage", new IOAcknowledge() 

	@Override
	public void ack(Object... arg0) 

		System.out.println("sendMessage IOAcknowledge" + arg0.toString());
	

 , "Hi!! how are you");

有谁知道IOAcknowledge何时或如何工作的解决方案?

编辑: 我正在使用的套接字库的文档链接。

Official 和 Github

【问题讨论】:

【参考方案1】:

您似乎忘记在服务器端代码上调用回调:

var io = require('socket.io')(80);
io.on('connection', function (socket) 
   socket.on('sendMessage', function (data, callback) 
       console.log('Message received:', data); 
       callback('Message successfully delivered to server!');
   );
);

更多信息请查看this线程或docs

编辑:

问题还在于Ack 实现应该作为emit 函数的last 参数,因此您的Java 代码应该如下所示:

socket.emit("sendMessage", "Hi!! how are you", new Ack() 
    @Override
    public void call(Object... args) 
        System.out.println("sendMessage IOAcknowledge" + args.toString());
    
);

【讨论】:

感谢您联系@rom4ek。我们在集成您的代码时遇到错误。我的伙伴将在下面提到。 callback('消息成功发送到服务器!'); ^ TypeError: undefined is not a function 我已经在服务器上实现了这个。但我收到上述错误 我使用的 socket.io 库具有与我发布的相同的参数序列。不是按照你的顺序。 你可以查看官方文档s01.de/hgexport/socket.io-java-client,github.com/Gottox/socket.io-java-client 我猜你可能在服务器端和客户端使用不同的版本。你应该试试我认为最新的,检查github.com/socketio/socket.io-client-java和socket.io/blog/native-socket-io-and-android

以上是关于IOAcknowledge 方法不适用于 Android 中的 SocketIO?的主要内容,如果未能解决你的问题,请参考以下文章

Ionic Native HTTP 不适用于 Android 9 (Pie) 及更高版本?

为啥 CONTAINS 方法不适用于 REPLACE

android中的自定义pdf查看器

长路径 \\?\ 解决方法不适用于某些安装

覆盖不适用于静态方法

为啥 scrollTo() 方法不适用于 iframe?