在Android上发送socket.io消息

伊雷

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

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

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代码(单击此处查看完整代码):

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服务器,当我触摸设备上的屏幕时,在服务器控制台上看到“ someoneclicked”消息。但是第二台设备没有收到此消息,并且LogCat上没有任何反应。我该如何解决此问题,并通过socket.io与这两个设备通信?

曼尼什(Manish Mulimani)

由于您使用的0.9.*版本socket.io,因此您需要使用广播消息io.sockets.emit该快捷方式io.emit已在1.0版本中引入

改变 :

io.emit('tiklama', data);

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

从0.9 doc迁移说:

快捷方式通常,对于常见事物有一些新的快捷方式。旧版本仍然可以使用,但是快捷方式不错。

广播到默认名称空间中的所有客户端

之前:

io.sockets.emit('eventname','eventdata');

现在:

io.emit('eventname','eventdata');

整洁的。请注意,在两种情况下,这些消息都会到达连接到默认“ /”名称空间的所有客户端,但不会到达其他名称空间中的客户端。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

发送私人消息(Socket.IO)

来自分类Dev

Socket.io为单个请求发送多个消息

来自分类Dev

发送一个socket.io .once消息

来自分类Dev

socket.io发送消息两次

来自分类Dev

Socket.io错误向套接字发送消息

来自分类Dev

Socket.io如何向任何人发送消息?

来自分类Dev

使用Socket.io无法发送TCP消息

来自分类Dev

发送一个socket.io .once消息

来自分类Dev

将加密消息发送到 socket.io 房间

来自分类Dev

Socket.io Android库发送方法

来自分类Dev

Socket.io教程创建额外的消息

来自分类Dev

PHP将消息发送到Node / Socket.IO服务器

来自分类常见问题

如何使用socket.io向特定客户端发送消息

来自分类Dev

如何使用WebSocket将消息发送到Socket.io服务器

来自分类Dev

socket.io:发送消息到特定房间(客户端)

来自分类Dev

将消息发送到node.js和socket.io中的单个套接字

来自分类Dev

使用socket.io和sails.js发送特定于会话的消息

来自分类Dev

socket.io-无法将消息发送到套接字中的特殊房间

来自分类Dev

发送消息时Socket.io聊天应用程序刷新

来自分类Dev

如何检查是否读取了通过socket-io发送的消息?

来自分类Dev

我如何使socket.io仅向一个客户端发送发射消息?

来自分类Dev

发送消息时Socket.io不会发出任何信息

来自分类Dev

发送太多消息后使用React和Socket.io挂起的聊天应用程序

来自分类Dev

Socket.io将消息发送到某些套接字(体系结构)

来自分类Dev

发送消息时Socket.io聊天应用程序刷新

来自分类Dev

使用Node.js和Socket.io发送私人消息

来自分类Dev

socket.io 客户端无法向服务器发送消息

来自分类Dev

无法使用 socket.io 向 nodejs 中的客户端发送消息

来自分类Dev

发送新消息时如何滚动到页面底部 - Socket.io

Related 相关文章

热门标签

归档