简体   繁体   English

Android套接字不监听某些Socket.io发出

[英]Android socket doesn't listen to some Socket.io emits

I am building an Android (& web) chat application using Socket.io. 我正在使用Socket.io构建一个Android(和Web)聊天应用程序。 When I io.emit some pure string data, Android listens to it, but it doesn't when I emit some modified string like SOME_CONST_STRING + msg . 当我io.emit一些纯字符串数据时,Android会监听它,但是当我发出一些修改后的字符串(如SOME_CONST_STRING + msg时则不会。

server.js server.js

 const SYS = '[알림]'; ... io.on('connection', (socket) => { socket.on('join', (name) => { names[socket.id] = name; let data = {"name": SYS, "message": CONNECTED_MESSAGE_WITH + name, "color": SYS_COLOR}; io.emit('chat message', data); var msg = data["message"]; io.emit('toast join', msg); }); ... } 

MainActivity.java MainActivity.java

@Override
protected void onCreate(Bundle savedInstanceState) {
...
mSocket.on("toast join", new Emitter.Listener() {
    @Override
    public void call(final Object... args) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                String msg = (String) args[0];
                Log.d(LOG_TAG, msg);
                Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show();
            }
        });
    }
});

For toast join , when I emit name (instead of msg ) it works. 对于toast join ,当我发出name (而不是msg )时,它可以工作。

What's the difference and which side is causing the problem? 有什么区别,是哪方面引起了问题?

Try like below: 尝试如下:

 let testString = CONNECTED_MESSAGE_WITH + name;
 let data = {"name": SYS,
             "message": testString,
             "color": SYS_COLOR};

Debug and see the value of testString. 调试并查看testString的值。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM