2012-12-05 72 views
2

我剛剛開始使用node.js,並且從我目前可知的情況來看,客戶端與服務器通信的方式是:如何在node.js + socket.io中創建自定義客戶端事件

當「信息」事件收到
//Client Code 1 
var iosocket = io.connect(); 
iosocket.on('connect', function() { 
    iosocket.send("Here's some info"); 
}); 

服務器成爲意識到這一點:

//Server Code 1 
var socketio = require('socket.io'); 
var io = socketio.listen(server); 
io.sockets.on('connection', function (client) {  
    client.on('message', function(msg) { 
     //msg== "Here's some info" 
    } 
}); 

現在我希望客戶能夠提供幾個不同的事件,如:

//Server Code 2 
client.on('buttonClicked', function() { ... 
client.on('nameChanged', function(newName) { ... 

但我無法弄清楚如何。唯一的解決辦法,我可以想出了使用我的作品是發回的消息,但讓他們包含的信息鍵值對:

//Server Code 3 
client.on('message', function(msg) { 
    kvp = message.split(','); 
    if(kvp[0] == 'buttonClicked') 
     ... 
    else if(kvp[0] == 'nameChanged') 
     ... 
} 

但我敢肯定有這樣做的正確方式我還沒有看到任何例子。我希望有類似服務器如何生成任何情況下它要使用的東西:

//Server Code 4 
io.sockets.emit('serverCustomEvent', eventData); 

後者又由客戶端監控使用:

//Client Code 4 
iosocket.on('serverCustomEvent', function(data) { 
    //process data 
}); 

有人能指出我在正確的方向?

回答

7

您可以在客戶端上使用emit將自定義消息發送到服務器。

iosocket.emit('serverCustomEvent', data); 

和服務器

io.sockets.on('connection', function(socket) { 
    socket.on('serverCustomEvent', login); 
}); 
+0

謝謝,我可以發誓,這是我想的第一件事,但我必須把事情弄糟了。我很難找到一個全面的API。這是我的問題與JavaScript,弱打字很難知道你正在使用什麼對象和谷歌他們。 – Alain

+0

弱打字FTW –

相關問題