【发布时间】:2017-11-03 12:18:39
【问题描述】:
我有一个使用 NodeJS、Socket.IO 和 Express 开发的服务器。我开发了一个网站来处理该服务器并且工作正常。当我尝试开发一个 android 应用程序时,问题就来了。
我在 socket.io 上有一个方法,它返回一个对象数组。在代码中是这样的:
socket.on("getData",function(data){
if(data!=null){
io.sockets.connected.emit("getSocData", {result:true});
}
}
在客户端,在js中,哪里工作正常。
socket.on("getSocData", function (data) {
if(data){alert("good"); }
}
当我调试Android应用时,问题来了,代码在哪里:
mSocket.on("getSocData", new Emitter.Listener() {
@Override
public void call(final Object.. args) {
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
JSONObject data = (JSONObject) args[0];
}
});
}
});
当我用我的手机调试那个 Android 代码时,开始循环 run 方法超过 20 次,尽管 mSocket.on 只触发了一次。
我快疯了,因为在网站中运行良好,但在 Android 中冻结了应用程序,直到运行方法停止。
我使用的依赖是:
compile ('io.socket:socket.io-client:0.8.3') {
exclude group: 'org.json', module: 'json'
}
谢谢 4 伙计们!
【问题讨论】:
标签: javascript android node.js sockets socket.io