在node.js上的socket.io上发送消息client-> server-> client
我正在使用NodeJS + Socket.IO进行简单的网页游戏。 有用。 为什么?
这是我的server.js
var app = require('express').createServer(); var io = require('socket.io').listen(app); io.sockets.on('connection', function (socket) { socket.on('set nickname' , function (nickname) { socket.nickname = nickname; console.log(nickname + ' just connected!'); }); socket.on('msg' , function (msg) { socket.msg = msg; io.sockets.emit('response', msg); }); socket.on('updatePlayer' , function (updatePlayer) { console.log("Someone just moved on the map!"); }); }); app.listen(8080);
我知道它的工作原因是因为,当我加载页面,这个脚本执行:
// SERVER STUFF socket.on('connect', function () { console.log('We are connected!'); name = $(".name").val(); this.emit('set nickname', name, function (success) {}); msg = name + "|" + currX + "|" + currY + "|" + currentMap; this.emit('msg', msg, function (success) {}); socket.on('response', function (data) { var theMsg = data.split("|"); sayDialog("New player! " + theMsg[0] + " connected on map " + theMsg[3] + " on coordinates (" + theMsg[1] + "," + theMsg[2] + ")"); }); });
我得到我的对话框(“CSS div”)像New player! weka connected on map 4 on coordinates (10,5)
New player! weka connected on map 4 on coordinates (10,5)
好的,酷,所以它的作品! 但是,当我“移动”我尝试使用此发送消息到服务器
socket.on('updatePlayer', function () { console.log("Testing..."); });
我什至不看console
说testing。 我不知道为什么。
客户端。 玩家移动并执行movePlayer函数:
function movePlayer () { socket.emit ('player move', {map: 4, coords: '0.0'}); } socket.on ('updatePlayer', function (msg) { console.log ('A player moves on map ' + msg.map + ' on coords ' + msg.coords); });
服务器端。 当某人移动时,除了原始播放器以外,每个套接字都会发出一个“updatePlayer”。 在每个客户端,updatePlayer被截获。
socket.on ('player move', function (msg) { io.sockets.emit ('updatePlayer', msg); });
服务器端
socket.on('updatePlayer', function(updatePlayer){ console.log("Someone just moved on the map!") updatePlayer() // will trigger the client side function });
客户端
socket.emit('updatePlayer', function(){ console.log('testing'); })