我是 NodeJS 和 Socket.io 技术的新手,我面临着存储在 io.sockets.adapter.rooms 中的变量的问题。
我有我的 app.js :
var app = require('express')();
var http = require('http').createServer(app);
var io = require('socket.io')(http);
app.get('/', (req, res) => {
res.sendFile(__dirname + '/index.html');
});
io.on('connection', (socket) => {
console.log('a user connected');
socket.on('message', function (room) {
socket.join(room);
console.log(io.sockets.adapter.rooms);
io.sockets.adapter.rooms[room].variable = "This is a test";
})
});
http.listen(3000, () => {
console.log('listening on *:3000');
});
索引.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<input type="button" value="Press me" id="test">
<body>
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io();
document.getElementById('test').addEventListener('click', function () {
socket.emit('message', 'room1');
})
</script>
</body>
</html>
服务器返回此错误:
TypeError: Cannot set property 'variable' of undefined
这意味着“io.sockets.adapter.rooms[room].variable”未定义,但我不明白如何定义它。
顺便说一句,我正在使用 NodeJS 12.8.3 和express 4.17.1
也许我需要一个特定的模块?
非常感谢所有花时间回答这个问题的人
海绵宝宝撒
相关分类