Javascript 发送消息客户端->;服务器->;node.js上socket.io上的客户端
我正在使用NodeJS+Socket.IO进行简单的网络游戏。它起作用了。为什么? 这是我的Javascript 发送消息客户端->;服务器->;node.js上socket.io上的客户端,javascript,jquery,sockets,node.js,Javascript,Jquery,Sockets,Node.js,我正在使用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.n
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] + ")");
});
});
我在我的对话框(“cssdiv”)中看到了类似于新播放器的东西!地图4上坐标(10,5)上的weka连接
好的,很酷,这样就行了!然而,当我“移动”时,我会尝试使用此命令向服务器发送消息
socket.on('updatePlayer', function () {
console.log("Testing...");
});
我甚至没有看到控制台说测试。我不知道为什么。服务器端
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');
})
客户端
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');
})
客户端。一个播放器移动并执行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
socket.on ('player move', function (msg) {
io.sockets.emit ('updatePlayer', msg);
});
您如何触发updatePlayer
事件?它不是socket.on('updatePlayer',function(){
但我怎么认为我没有触发它…我将如何触发它?您必须从服务器到客户端触发它:例如this.emit('updatePlayer',msg);来自服务器。@weka完全按照Wilk的建议-您需要发出事件