如何在android中的Socket.IO-client中加入socket room或channel

Sia*_*oft 3 android websocket socket.io

我是套接字编程的新手,在一个项目中我使用Socket.IO-client Java在 android 设备和服务器之间创建套接字连接。服务器端开发人员要求我连接到服务器,然后加入特定的房间/频道。我对第一部分没问题,但是我如何通过插座加入房间?

我的代码如下:

private void ConnectAndJoin() {
        Log.e("starting:","starting!");

        final Socket socket;
        try {
            socket = IO.socket("http://192.168.1.6:5000");
            socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {
                @Override
                public void call(Object... args) {
                    socket.emit("foo", "hi");
                    Log.e("status:","connected- sent");

                    socket.
                }

            }).on("event", new Emitter.Listener() {

                @Override
                public void call(Object... args) {
                    Log.e("status:","event2");

                }

            }).on(Socket.EVENT_DISCONNECT, new Emitter.Listener() {

                @Override
                public void call(Object... args) {
                    Log.e("status:","disconnected");

                }

            });
            socket.connect();
        } catch (URISyntaxException e) {
            Log.e("status:","done with error");
        }
Run Code Online (Sandbox Code Playgroud)

请帮我一个忙!

Sam*_*Sam 5

您无法从客户端使用套接字 io 加入房间。它应该发生在服务器端。

socket.emit('join-room' , roomName or RoomId)
Run Code Online (Sandbox Code Playgroud)

为了解决这个问题,你需要发出一个套接字,其中包含你想要加入的房间作为 data ,并且在服务器中,你监听这个套接字并使用已发送的房间的名称或 id 调用 socket.join() 。

      socket.on("join-room", new Emitter.Listener() {
      @Override
      public void call(Object... args) {
        room = args[0];
        socket.join(room);
      }
    });
Run Code Online (Sandbox Code Playgroud)

警告:我不懂java,所以对于java开发者来说,如果你看到语法错误,你可以评论我会更新它

希望能帮助到你!