javascript - socket.io 中的房间。如何发送消息?

标签 javascript node.js websocket socket.io

我是node.js和socket.io的新手,按照官方socket.io网站的“入门”代码,我编写了简单的聊天。然后我想创建不同的房间,就像在信使中一样。但依靠官方文档,我自己无法做到这一点...... 这是我的服务器代码:

io.on('connection', function(socket) {

    var room_name = socket.request.headers.referer; // link of the page, where user connected to socket

    // connecting to room
    socket.join(room_name, function(){
        //trying to send messages to the current room
        io.to(room_name, function () {
            socket.on('chat message', function (msg) {
                io.emit('chat message', msg);
            });
        });
    });

});

还有我的客户端代码:

        $(function () {
            var socket = io();
            //when we submit our form
            $('form').submit(function(){
                //we are sending data to socket.io on server
                socket.emit('chat message', $('#m').val());
                $('#m').val('');
                return false;
            });
            //And then we are creating message in our html code
            socket.on('chat message', function(msg){
                $('#messages').append($('<li>').text(msg));
            });
        });

为什么这段代码不起作用?我该怎么做才能向不同的房间发送消息?

最佳答案

将此添加到服务器代码:

 var room_name = socket.request.headers.referer; // link of page, where user connected to socket

     //connecting to room
 socket.join(room_name);
 socket.on('chat message', function (msg) {
     io.to(room_name).emit('chat message', msg);
 });

关于javascript - socket.io 中的房间。如何发送消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42822753/

相关文章:

javascript - 在 Angular 组件中共享大的 json 数据是好是坏?

javascript - Android平台上的QWebView HTML5 GeoLocation

javascript - Chrome 的 toLocaleFormat 的替代品是什么?

javascript - 无法从 html 获取值到 Controller

javascript - 如何从服务器返回 html 模态目标 View ?

node.js - Socket.IO - 如何在 socket.io 1.3.6 中使用 socketID 关闭套接字?

tomcat - @javax.inject.Singleton 在 tomcat7.0.47 中不起作用

javascript - 在关闭或已经关闭的模式下保护 websocket

node.js - 发出 http 或 https 请求时如何指定 IP 和主机名?

node.js - 如何通过 Dialogflow 中的内联编辑器将 Dialogflow 连接到 Cloud Firestore?