node.js和socket.io的多房间聊天问题

时间:2014-03-06 06:16:00

标签: javascript node.js express socket.io

我一直在使用node,socket.io和express进行基本的多房间聊天设置。基本上我希望人们可以通过访问任何网址http://domain.com/room/123来加入房间,他们将加入socket.io中的123房间。所以有人可以加入任何号码的房间并将该链接发送给他们的朋友。

他们在聊天中的实际html文件是http://mydomain.com/room.html

在查看其他类似设置的代码之后,我把一些东西放在一起,但我不确定一些东西,因为它不能正常工作。

以下是相关代码:

---服务器---

var PORT = 3000;
var app = require('express')(),
    server = require('http').createServer(app),
    io = require('socket.io').listen(server);

server.listen(PORT);

app.get('/room/*', function (req, res){
    res.sendfile(__dirname + '/room.html');
});

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

socket.on('user_join', function(username, room_number){
    socket.username = username;
    socket.room = room_number;
    socket.join(room_number);
});

socket.on('send_message', function(message){
    socket.broadcast.to(socket.room).emit('update_chat', socket.username, message);
});

socket.on('disconnect', function(){
    socket.leave(socket.room);
});


});

以下是客户端主html页面中的一些相关代码:

// Gets the 123 out of /room/123
var room = window.location.pathname.substring(6);
var socket = io.connect("http://mydomain.com:3000/room.html");

    socket.on("connect", function(){
        socket.emit('user_join', "Bob", room);
    });

    socket.on("update_chat", function(username, message){
        addChatMessage(username, message);
        messages.push({username : username, message : message});
    });

但是,我认为我误解了快递路由或io.connect()行。如果房间传递的URL如“/ room / 123”那么,我应该在io.connect()行放什么?因为socket.on('connect', function()...部分根本没有被调用,所以它由于某种原因没有连接。

我希望这是有道理的。

0 个答案:

没有答案