从客户端添加套接字发出
Add socket emit from client side
我正在尝试在我玩的在线浏览器游戏中创建一个新的套接字事件处理程序,这样我就可以在安装了相同userscript的玩家之间发送数据。
游戏使用socket。到目前为止,我所做的是:我添加了一个用户端套接字。在处理器上,像这样:
game.socket.on("hello", function() { console.log("hello there") })
我在连接到同一游戏的两个玩家上这样做,但是当我这样做时:
game.socket.emit("hello")
只有发出emit的玩家退出hello there
。
我的猜测是服务器端没有发出名称为hello
的事件的处理程序。是否有一种方法,我可以在不访问服务器端代码的情况下添加,或者绕过它并将数据直接发送给其他玩家?
我将添加一点,并将我的评论变成一个答案:
一个套接字。IO连接是客户机和服务器之间的连接。从客户机,在该连接上所能做的就是发送到服务器。因此,game.socket.emit("hello")
将只向服务器发送一条消息。
如果你想让你的服务器将该消息发送给其他用户,你将需要添加代码到服务器来侦听该消息,然后在接收到该消息时将其发送给其他玩家。套接字。IO是客户机到服务器的连接。
你不能直接从一个客户端发送到另一个套接字。IO(或在websocket中使用哪个socket)。IO是基于的。相反,您必须将其发送到服务器,并让服务器将其转发到其他客户机。
插座。考虑到你的房间id是room_one:
,你可以从客户端发送你的消息,并使用服务器端发送此消息给所有房间成员,: 客户:var socket = io();
socket.on('connect',function(){
socket.emit('join','room_one');
socket.emit('room_message',{hello:'hello'});
});
socket.on('room_message',function(data){
console.log(data);
})
服务器:
io.sockets.on('connection',function(socket){
socket.on('join',function(room){
socket.join(room);
});
socket.on('room_message', function(data) {
io.to('room_one').emit('room_message',{world:'world'});
});
});
希望这对你有帮助!
我将房间中的当前用户显示给所有连接的套接字:
服务器端socket.join(user.room);
io.to(user.room).emit('roomData',{room:user.room, users: getUsersInRoom(user.room)});
客户端socket.on('roomData',(data)=>{
console.log(data);
currentUsers.innerHTML='${data.users.length} Users Online in ${data.room} Room'
});
相关文章:
- 如何使用HTML5与UDP套接字通信
- 在node.js中写入ECONNRESET错误和套接字连接检查
- java,javascript签名的小程序(文件选择,ftp上传)安全性/套接字异常
- 套接字服务器向客户端广播,但不从两者接收
- 如何确定套接字中的变量是否匹配
- 如何通过网络套接字连接到树莓派上的Mosquitto经纪人
- 快速的套接字 io 实例/中间件
- PHP:Web套接字和html 5
- 无法从客户端发出套接字消息
- STOMP web套接字回调不'不起作用
- Will my'新对象'在套接字断开连接时被垃圾收集
- 套接字服务器在本地获得500毫秒的往返时间
- 将服务器托管的Web应用程序连接到本地Web套接字
- 通过套接字发送画布元素,JS中的最大堆栈大小
- 如何使用套接字将node.js与ada连接起来
- 将 couchdb 持久性添加到节点中的套接字 json 源
- 在c#中为套接字的响应添加报头
- 如何添加插座?IO套接字通过他们的socketid到一个房间
- 聊天服务器使用套接字.消息没有添加到列表中
- 从客户端添加套接字发出