0
Heya我想建立一個小型聊天客戶端,以瞭解websockets如何工作以便在canvas中進行遊戲。它可以很好地發送套接字,但它們只會將它發送給寫它的人。不能發送消息到所有套接字(socket.io)
我想我錯過了一些小事,但我不明白爲什麼它不起作用。
服務器端代碼
var app = require('express')()
, server = require('http').createServer(app)
, io = require('socket.io').listen(server);
server.listen(3000);
app.get('/', function (req, res) {
res.sendfile(__dirname + '/index.html');
});
io.sockets.on('connection', function (socket) {
socket.on('user-message', function (data) {
console.log(data);
sendMessage(data.message);
});
});
var sendMessage = function(message) {
io.sockets.emit('server-message', {message: message});
}
客戶端代碼
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io.connect('http://localhost');
socket.on('server-message', function (data) {
var history = $('#chatbox').val();
$('#chatbox').val(history + "\n" + data.message)
});
$("#write").keyup(function(event){
if(event.keyCode == 13){
socket.emit('user-message', {message: $(this).val()});
$(this).val('');
}
});
</script>
它沒有工作,或者我害怕。只需將它發回給首先發送給它的人。實際上我曾嘗試過播放,並認爲io.sockets.emit會有所幫助,因爲它是所有套接字。 – Ms01
@cubsink是否在單個套接字上調用'broadcast.emit'? – Musa
我不這麼認爲,我複製了你的代碼。我試圖將其更改爲io.sockets。 – Ms01