2014-09-10 22 views
2

我正在使用em-websocket为客户(可能有2个或更多的用户)进行通信。如何在em-websocket中进行广播或连接?

在他们的介绍。 https://github.com/igrigorik/em-websocket

我想修改他们的简单回声服务器的例子来达到我的目的。

但在他们的例子中,handshake.path输出总是显示“/”。

我无法知道客户端来自哪里。

是否有任何解决方案可以知道客户端来源地并向他们发送广播消息?

回答

1

我在他们的例子中找到了答案。

https://github.com/igrigorik/em-websocket/blob/master/examples/multicast.rb

EventMachine::WebSocket.start(:host => "0.0.0.0", :port => 8080, :debug => true) do |ws| 
ws.onopen { 
    sid = @channel.subscribe { |msg| ws.send msg } 
    @channel.push "#{sid} connected!" 
ws.onmessage { |msg| 
    @channel.push "<#{sid}>: #{msg}" 
} 
ws.onclose { 
    @channel.unsubscribe(sid) 
} 
} 
end 

但我仍然有一个问题:我如何才能将消息发送到指定的客户呢?

(例如)两个客户(1号和2号)进行自己的通信。