javascript - Socket.io 房间不工作

标签 javascript node.js socket.io

我有问题,因为这个例子不工作,我不知道为什么......

服务器

var app = require('http').createServer(handler);
var io = require('socket.io').listen(app);
var fs = require('fs');
var port = 3250;

app.listen(port);



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

    socket.on('room', function(room) {

        socket.join(room);
    });

var room = abc123
io.sockets.in(room).emit('m', 'what is going on, party people?');

});

客户端

var room = "abc123";

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

            socket.on('m', function(data) {
                document.write(data);
            });

我正在尝试使用这个 https://gist.github.com/crabasa/2896891它没有帮助:(

谢谢你的帮助!

最佳答案

服务器:

var app = require('http').createServer(function(req,res){});
app.listen(3250);
var io = require('socket.io').listen(app)
//io = socketio.listen(server);

// handle incoming connections from clients
io.sockets.on('connection', function(socket) {
    // once a client has connected, we expect to get a ping from them saying what room they want to join
    socket.on('room', function(room) {
        socket.join(room);
    });

    socket.on('say',function(data){
        io.sockets.in(data.room).emit('message',data.message);
    })
});

客户:

<!DOCTYPE HTML>
<html>
<head>
    <script src="http://192.168.1.7:3250/socket.io/socket.io.js"></script>
<script>
// set-up a connection between the client and the server
var socket = io.connect('http://192.168.1.7:3250');

// let's assume that the client page, once rendered, knows what room it wants to join
var room = "abc123";

socket.on('connect', function() {
   // Connected, let's sign-up for to receive messages for this room
   socket.emit('room', room);
});

socket.on('message', function(data) {
   console.log('Incoming message:', data);
});
</script>
</head>
<body>
    <button onclick='socket.emit("say",{"room":room,"message":"hello world"})'>Say hello world</button>

</body>
</html>

将 192.168.1.7 更改为您的 IP 地址,祝您好运!

关于javascript - Socket.io 房间不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17697199/

相关文章:

node.js - 在 mongodb 中保存或更新文档时如何防止更新 "updatedAt"字段?

javascript - passport.socket.io 无法修复未找到的 session

javascript - Socket.io 仅针对发射器发出事件

php - Javascript document.write(metadata) 对 SEO 有效吗?

javascript - JSON.parse 无法将字符串更改为对象

node.js - 使用命令行参数运行 webpack

python - 如何使用 python 连接到 socket.io

javascript - Javascript 警报 Google Chrome 中的奇怪字体

javascript - 将 onclick 事件添加到 Sigma.js 中的节点

node.js - Azure 函数压缩 POST 正文