2014-01-09 54 views
0

我在理解socket.io和node.js的工作方式時遇到了一些問題。必須在服務器中再次調用?

我試着用發射消息的幾個例子,它的工作。我不明白的是來自客戶。

我用在發射端,例如:socket.emit('custom_event');,但除非我加上這樣的事情在我的服務器並不在其他客戶端的工作:

var io = require('socket.io').listen(app); 

io.sockets.on('connection', function(socket) { 
    socket.on('custom_event', function() { 
    socket.emit('custom_event'); 
    }); 
}); 

難道我做錯了什麼或做我需要總是在服務器端添加一個客戶端應該發送給其他客戶端的定義?

+0

如果要發送消息給然而八方通所有連接的客戶端然後使用'socket.broadcast.emit' – vinayr

+0

我想發送消息給客戶只有'socket.emit('custom_event' )'從客戶端調用。沒有在服務器端定義'custom_event'。那可能嗎? – zeth

回答

0

這是不可能的,socketio需要客戶端之間的服務器邏輯。

你可以這樣做:

socket.broadcast.emit

廣播意味着將消息發送給大家,除了啓動它的插座別人。


io.sockets.emit

可發出所有,(公司即開始行動插座。)

從服務器

Can you connect client to client via web sockets without touching the server?

+0

好吧,我明白我需要一個服務器邏輯。但是是否有可能例如總是捕獲所有客戶端發射事件,並將它們發射到所有其他客戶端,而無需在服務器端指定發射名稱?每次我想從客戶端添加新的emit事件時,我想省略修改服務器代碼。 – zeth

+1

我在這裏找到了我的解決方案:https://npmjs.org/package/socket.io-wildcard感謝您的幫助和附加信息! – zeth

相關問題