javascript - Socket.io - TypeError:socket.in 不是函数
问题描述
我制作了一个使用 socket.io 发送消息的简单应用程序。
这里是服务器代码片段:
var io = require('socket.io')(http);
io.on('connection', function(socket) {
console.log('a user connected');
socket.on('disconnect', function() {
console.log('user disconnected');
});
socket.on('connect to room', function(rooms) {
for (var i = 0; i < rooms.length; i++) {
socket.join(i);
console.log('joined to room number ' + i);
}
});
socket.on('chat message', function(id, msg) {
console.log('message!');
io.broadcast.to(id).emit('chat message', msg);
});
});
这是客户端代码:
var socket = io('http://localhost:8080');
socket.on('connect', function(socket) {
console.log('you have been connected!');
});
socket.on('chat message', function(msg) {
console.log('message!');
$('#messages').append(msg);
});
socket.emit('connect to room', [{
{
user.rooms
}
}]);
if (e.which == 13 && target.is('#message')) {
var message_text = $('#message').val();
socket.in(room.id).emit(message_text);
$(#messages).append(message_text);
}
(房间对象是当前打开的房间)运行后出现错误:
未捕获的类型错误:socket.in 不是函数
有什么想法吗?如果您认为我写错了什么,请随时说出来(for example x++ instead x += 1)
。
解决方案
socket.in
或者socket.to
不在客户端工作,你应该在服务器端使用它。
例如 :
io.on('connection', (socket) => {
// to one room
socket.to('others').emit('an event', { some: 'data' });
// to multiple rooms
socket.to('room1').to('room2').emit('hello');
// a private message to another socket
socket.to(/* another socket id */).emit('hey');
// WARNING: `socket.to(socket.id).emit()` will NOT work, as it will send to everyone in the room
// named `socket.id` but the sender. Please use the classic `socket.emit()` instead.
});
推荐阅读
- python - 识别网格粒子所属
- mql4 - 我需要一些关于如何使用 iCustom() 函数来检测 mql4 中的颜色的帮助
- c - 在 MathGL 中如何在数学运算后获取数组的值
- java - 在我的情况下,通过 HTTP-Request 同步检索数据的最佳方式?
- ios - 什么是在 swiftUI 中创建用户模型的最佳方法
- c++ - 就时间复杂度而言,堆排序/优先级队列是否比 C++ 中的映射(STL 中的有序映射)更好?
- javascript - 如何在不禁用滚动的情况下保持页面内容不滚动?
- excel - Excel:如何计算多个条件的和积?
- apache - VUE 3 createWebHistory() 在 http 服务器上的生产构建中无法正常工作
- flutter - 添加 orderBy 子句时查询不起作用