我想使它所以当用户按下一个按钮,一个div的背景将改变颜色为所有用户。但这并没有发生。这是我的socket.on
和socket.emit
问题。这是我的代码。socket.on()和socket.emit()失败
服务器端
var express = require('express');
var routes = require('./routes');
var io = require('socket.io');
var app = express();
var server = require('http').createServer(app);
app.configure(...);
app.get('/', routes.index);
server.listen(3000, function(){
console.log('Listening on port 3000');
});
//Attach socket.io
var io = io.listen(server);
io.sockets.on('connection', function (socket) {
console.log('connection established');
socket.on('background change event', function(button){
console.log(button);
if(button == 'button_1')
socket.emit('background change', 'red');
else if(button == 'button_2')
socket.emit('background change', 'green');
else if(button == 'button_3')
socket.emit('background change', 'blue');
});
});
客户端
var socket = io.connect();
$(document).ready(){
var buttons = [$('#button_1'), $('#button_2'), $('#button_3')];
$.each(buttons, function(i, val){
val.click(function(){
console.log('clicked ' + val.attr('id'));
socket.emit('change background event', val.attr('id'));
});
});
socket.on('change background', function(color){
console.log(color);
$('#change_my_background').css('background-color',color);
});
});
当我连接到该页面时,服务器日志connection established
所以我们至少去到这一点。然后我点击一个按钮,并在客户端登录clicked button_1
,这就是最后的日志记录。如此看来,问题在于无论是socket.emit('change background event', val.attr('id'))
或socket.on('background change event', function(button){...})
。
我试图改变我的socket.emit声明发送ID在像一些socket.io实例对象,但也不能工作。 所以我需要做什么改变,使这项工作?
P.S.这里是我的版本信息:
node.js 0.8.11
express 3.0.0rc4
socket.io 0.9.10
呵呵该事件被命名
change background event
。它的确是。也许我应该去检查阅读障碍。 ;) – Aust