【问题标题】:How i send socket.io android to nodejs to client html我如何将 socket.io android 发送到 nodejs 到客户端 html
【发布时间】:2018-07-01 03:49:08
【问题描述】:

我想通过套接字 io 从 android 将数据发送到 nodejs 作为后端。之后节点js后端的数据发送到客户端html js socket io。

但是我在 html 的 io 客户端套接字中接收数据时遇到了困难

这是我在 Android 工作室中的代码

ImageButton Buttun = (ImageButton) findViewById(R.id.emergency_button);
        Buttun.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                try {
                    JSONObject json = new JSONObject();
                    json.putOpt("emergency", "true");
                    json.putOpt("lat_cor", "dfefehjefj");
                    json.putOpt("long_cor", "fejfejfe");
                    mSocket.emit("broadcaster", json);
                    Toast.makeText(EmergencyButton.this, json.toString(), Toast.LENGTH_SHORT).show();

                } catch (JSONException ex) {
                    ex.printStackTrace();
                }

            }
        });

然后我将它发送到我使用 js 节点运行的 websocket

这是我在 Node JS Server Socket.io 中的代码

WebSocket.sockets.on('connection', function (io) {
    /** Aksi Yang Akan Terjadi Jika Web Socket Menerima Koneksi Dari User Yang Connect Di Dalam System Database **/
    /** ############################### AWAL FUNGSI REGISTER PADA MEMBER USER ############################## **/
    io.emit('broadcaster_emergency', {"dsd": true, "sdfse": false});
    io.on('broadcaster', function (callback) {
        io.emit('broadcaster_emergency', {"dsd": true, "sdfse": false});
        console.log(callback);

    });

    /** Fungsi Untuk Melakukan Pengecekan Jika Ada User Yang Keluar/Menutup Tab Sesi Yang Sedang Berlangsung : */
    io.on('disconnect', function () {
        Winston.info('Client Tidak Aktif');
    });
    /** Akhir Fungsi Untuk Melakukan Pengecekan Jika Ada User Yang Keluar/Menutup Tab Sesi Yang Sedang Berlangsung : */

});

之后客户端服务器必须使用javascript原生socket.io从nodejs接收数据

这是我的代码 Javascript 客户端网站

var socket = io('http://127.0.0.1:8081');
        socket.on("broadcaster_emergency", function (data) {
            addMarker({lat: -5.111929, lng: 119.4190643}, 'Pasar');
            //socket.emit('my other event', { my: 'data' });
        });

但是从android发送的数据只在js节点中发送,并出现在命令提示符中。

但是我的浏览器中的数据没有出现

【问题讨论】:

    标签: android node.js sockets


    【解决方案1】:

    您的问题是您的套接字服务器将数据发送回发送者(在您的情况下返回 Android 客户端),而不是其他连接的客户端。因此,您的浏览器客户端不会收到通知。

    如果要将broadcaster上接收到的数据发送给除发送者之外的所有连接的客户端,您应该执行以下操作:

    // sending to all clients except sender
    io.broadcast.emit('broadcaster_emergency', {"dsd": true, "sdfse": false});
    

    如果您想知道如何针对其他特定情况发出事件,请查看this

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-31
      • 2018-01-30
      • 1970-01-01
      • 1970-01-01
      • 2014-08-17
      • 2018-02-13
      • 2014-04-24
      • 2021-10-07
      相关资源
      最近更新 更多