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

时间:2016-06-30 10:20:29

标签: 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");
        }




请给我一个帮助!

1 个答案:

答案 0 :(得分:4)

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

socket.emit('join-room' , roomName or RoomId)

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

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

警告:我不知道java对java devs如果你看到语法错误你可以发表评论我会更新它

希望它有所帮助!