我有一個井字遊戲,將動作發送到所有連接,我也有一個復位按鈕,可以在遊戲結束時重置遊戲。韓元。如何將socket.io中的按鈕的功能發送到所有連接
這些舉措工作正常,他們被看到。但是,當按下重置按鈕時,只有按下該按鈕的連接才能看到該按鈕,因此該功能正確觸發,但不會發光。
這是我的服務器端代碼:
var express = require('express');
var app = express();
var http = require('http').Server(app);
var io = require('socket.io')(http);
app.use("/", express.static('public'));
io.on('connection', function(socket){
socket.on('move', function(move){
io.emit('move', move);
});
socket.on('reset', function(reset){
io.emit('reset', reset);
});
});
http.listen(3000, function(){
console.log('listening on *:3000');
});
這是我的客戶端代碼部分,其示出了移動和按鈕的功能。
function sendPickSquare(index) {
return function() {
if (gameover || buttons[index].innerHTML !== "")
return;
socket.emit('move', {
'index' : index,
'value' : selectTurn.value
});
};
}
socket.on('move', function(move) {
buttons[move.index].innerHTML = move.value;
if (move.value === 'X') {
selectTurn.value = 'O';
} else {
selectTurn.value = 'X';
}
checkWin();
});
function resetGame() {
for (var i = 0; i < buttons.length; i++) {
buttons[i].style.backgroundColor = '';
buttons[i].innerHTML = "";
}
gameover = false;
}
for (var i = 0; i < buttons.length; i++) {
buttons[i].onclick = sendPickSquare(i);
}
$("#replayButton").click(function(reset) {
socket.emit('reset', resetGame());
});
我在想,我可能不得不引用socket.io所看到的作爲所有連接發射的函數。任何援助將非常感激。
嘗試'io.sockets.emit'而不是'io.emit' – ovi 2014-09-10 17:57:41
感謝您的建議,但仍然沒有發射到第二個連接。 – Jolie 2014-09-10 18:13:07
是_reset_保留還是什麼? (文檔不作任何說明) – dandavis 2014-09-10 18:26:26