发送数据给一个体面的用户与凯末尔websocket

问题描述:

我怎样才能发送数据数据到一个体面的用户通过websockets连接?我知道, Websocket连接产生的上下文,但我怎么能过滤一个体面的套接字连接发送数据到只有1(或一些)连接的用户(s)取决于上下文(env)?发送数据给一个体面的用户与凯末尔websocket

SOCKETS = [] of HTTP::WebSocket 
ws "/chat" do |socket,env| 
    room = env.params.query["room"] 
    SOCKETS << socket 
    socket.on_message do |message| 
    SOCKETS.each { |socket| socket.send message} 
    end 
    socket.on_close do 
    SOCKETS.delete socket 
    end 
end 

必由之路插座包含房间或需要套接字是一个哈希?

+0

显示您解决问题的努力。 – SteveFest

您可以将套接字存储为哈希,并为您的客户端提供标识,然后您可以发送最近客户端的已保存套接字。

我的意思是

SOCKETS = {} of String => HTTP::WebSocket 

socket.on_message do |message| 
    j = JSON.parse(message) 
    case j["type"] 
    when "login" 
    user_id = j["id"].to_s 
    SOCKETS[user_id] = socket 
    when "whisper" 
    to = j["to"].to_s 
    from = j["from"] 
    user = SOCKETS[to].send("#{from} is whispering you!") 
end 

类似的东西。