admin管理员组文章数量:1187854
I'm using NodeJS+Socket.IO for simple web game. It works. Why?
Here's my 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);
The reason I know it works is because, when I load the page and this script executes:
// 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] + ")");
});
});
I get in my dialogbox ("CSS div") something like New player! weka connected on map 4 on coordinates (10,5)
OK, cool, so it works! However, when I "move" I try sending a message to server using this
socket.on('updatePlayer', function () {
console.log("Testing...");
});
I don't even see console
say Testing. I don't know why.
I'm using NodeJS+Socket.IO for simple web game. It works. Why?
Here's my 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);
The reason I know it works is because, when I load the page and this script executes:
// 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] + ")");
});
});
I get in my dialogbox ("CSS div") something like New player! weka connected on map 4 on coordinates (10,5)
OK, cool, so it works! However, when I "move" I try sending a message to server using this
socket.on('updatePlayer', function () {
console.log("Testing...");
});
I don't even see console
say Testing. I don't know why.
2 Answers
Reset to default 21Client-side. A player moves and the function movePlayer is executed:
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);
});
Server-side. When someone moves, a 'updatePlayer' is emitted for each socket except the original player. On each client side, the updatePlayer is intercepted.
socket.on ('player move', function (msg) {
io.sockets.emit ('updatePlayer', msg);
});
Server side
socket.on('updatePlayer', function(updatePlayer){
console.log("Someone just moved on the map!")
updatePlayer() // will trigger the client side function
});
Client side
socket.emit('updatePlayer', function(){
console.log('testing');
})
本文标签: javascriptSending messages clientgtservergtclient on socketio on nodejsStack Overflow
版权声明:本文标题:javascript - Sending messages client->server->client on socket.io on node.js - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1738378303a2083803.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
updatePlayer
event ? – Manse Commented May 15, 2012 at 12:21socket.on('updatePlayer', function () {
but how I don't think I am triggering it... how would I trigger it? – test Commented May 15, 2012 at 12:36emit
the event – Manse Commented May 15, 2012 at 12:38