Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了java – 在Android上发出socket.io消息大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在尝试使用socket.io开发一个应用程序.有2个设备,当有人触摸到设备1的屏幕时,我需要在设备2上看到一条消息.

这是nodeJS服务器代码(我使用的是SocketIO v0.9.*,因为socket.io-java-client不支持版本> 1.0.0)

@H_450_6@var app = require('http').createServer() var io = require('socket.io').listen(1337); io.on('connection',function (socket) { socket.on('tiklama',function (data) { console.log(data); io.emit('tiklama',data); }); });

和我的Java代码(整个代码click here):

@H_450_6@protected void onCreate(Bundle savedInstanceStatE) { super.onCreate(savedInstanceStatE); setContentView(R.layout.activity_main); final RelativeLayout anapanel = (RelativeLayout) findViewById(R.id.anapanel); final TextView tw = (TextView) findViewById(R.id.textView1); final TextView tw2 = (TextView) findViewById(R.id.textView2); final TextView tw4 = (TextView) findViewById(R.id.textView4); try { socket = new SocketIO("http://SERVERIpaddrESS:1337"); socket.connect(new IOCallBACk() { @Override public void onmessage(JSONObject json,IOAckNowledge ack) { try { Log.d("x","Server said:" + json.toString(2)); } catch (JSONException E) { e.printStackTrace(); } } @Override public void onmessage(String data,IOAckNowledge ack) { Log.d("x","Server said: " + data); } @Override public void onError(SocketIOException socketIOException) { Log.d("x","an Error occured"); socketIOException.printStackTrace(); } @Override public void onDisconnect() { Log.d("x","Connection terminated."); } @Override public void onConnect() { Log.d("x","Connection established"); } @Override public void on(String event,IOAckNowledge ack,Object... args) { Log.d("x","Server triggered event '" + event + "'"); if(event.contentEquals("tiklama")) { tw4.setText("Someone touched to device 1"); } } }); // This line is cached until the connection is establisched. } catch (MalformedURLException E) { // TODO Auto-generated catch block e.printStackTrace(); } anapanel.setOnTouchListener(new OnTouchListener() { @Override public Boolean onTouch(View v,MotionEvent event) { // TODO Auto-generated method stub if (event.getAction() == MotionEvent.ACTION_DOWN){ socket.emit("tiklama","someoneclicked"); } return false; } }); }

所以这里我的问题是:两台设备都成功连接到NodeJS服务器,当我触摸设备上的屏幕时,我在服务器控制台上看到“有人点击”消息.但是第二个设备没有收到此消息,并且LogCat上没有任何反应.我怎样才能解决这个问题并用socket.io传达这两个设备?

最佳答案
由于您使用的是0.9.*版本的socket.io,要广播消息,您需要使用io.sockets.emit.快捷方式io.emit是在1.0版本中引入的.

变化:

@H_450_6@io.emit('tiklama',data);

@H_450_6@io.sockets.emit('tiklama',data);

Migration from 0.9 doc说:

大佬总结

以上是大佬教程为你收集整理的java – 在Android上发出socket.io消息全部内容,希望文章能够帮你解决java – 在Android上发出socket.io消息所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。