Android Socket.io:错误:在Socket.emit上广播时不支持回调
我成功地从nodejs服务器向android客户端发送了ack,但没有成功地执行相反的操作。我有一个错误:在Socket.emit上广播时不支持回调 服务器节点:Android Socket.io:错误:在Socket.emit上广播时不支持回调,android,node.js,sockets,callback,ack,Android,Node.js,Sockets,Callback,Ack,我成功地从nodejs服务器向android客户端发送了ack,但没有成功地执行相反的操作。我有一个错误:在Socket.emit上广播时不支持回调 服务器节点: socket.broadcast.to(socketid).emit('message', data, callThis); //this function is executed when client calls it function callThis (dataFromClient){ console.log("Call
socket.broadcast.to(socketid).emit('message', data, callThis);
//this function is executed when client calls it
function callThis (dataFromClient){
console.log("Call back fired: " + dataFromClient);
}
客户端android:
socket.on("message", new Emitter.Listener() {
@Override
public void call(Object... args) {
Ack ack = (Ack) args[args.length - 1];
ack.call();
JSONObject data = (JSONObject) args[0];
.....
}
}
我能做些什么来解决这个问题 正如错误所说,广播时不支持回调。不过,看起来您并不是在广播,因为您正在尝试向单个客户端发送。因此,假设套接字是实际的客户端套接字实例,您可以更改代码:
socket.broadcast.to(socketid).emit('message', data, callThis);
只发送给那个人
socket.emit('message', data, callThis);
基本上支持@Xeoncross的答案。当连接到来时,只需将套接字保存到映射中,如下所示 this.connections=新地图 this.server.onconnection,socket:SocketIO.socket=>{ 此.connections.setsocket.id,插座 } 然后使用循环分别发送所有用户
public broadcast(msg: string) {
for(const socket of this.connections.values()) {
socket.emit("block", msg, (confirm: string) => {
console.log("confirmation msg: ", confirm)
})
}
}