Set/gt remote ip of client connection.
This commit is contained in:
parent
f5359357c1
commit
e461fa9ceb
2 changed files with 12 additions and 1 deletions
|
@ -11,6 +11,7 @@ class Sessions::Event::ChatSessionInit < Sessions::Event::ChatBase
|
||||||
state: 'waiting',
|
state: 'waiting',
|
||||||
preferences: {
|
preferences: {
|
||||||
participants: [@client_id],
|
participants: [@client_id],
|
||||||
|
remote_id: @remote_id,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -98,7 +98,9 @@ EventMachine.run {
|
||||||
EventMachine::WebSocket.start( host: @options[:b], port: @options[:p], secure: @options[:s], tls_options: tls_options ) do |ws|
|
EventMachine::WebSocket.start( host: @options[:b], port: @options[:p], secure: @options[:s], tls_options: tls_options ) do |ws|
|
||||||
|
|
||||||
# register client connection
|
# register client connection
|
||||||
ws.onopen {
|
ws.onopen {|handshake|
|
||||||
|
headers = handshake.headers
|
||||||
|
remote_ip = get_remote_ip(headers)
|
||||||
client_id = ws.object_id.to_s
|
client_id = ws.object_id.to_s
|
||||||
log 'notice', 'Client connected.', client_id
|
log 'notice', 'Client connected.', client_id
|
||||||
Sessions.create( client_id, {}, { type: 'websocket' } )
|
Sessions.create( client_id, {}, { type: 'websocket' } )
|
||||||
|
@ -108,6 +110,8 @@ EventMachine.run {
|
||||||
websocket: ws,
|
websocket: ws,
|
||||||
last_ping: Time.now.utc.to_i,
|
last_ping: Time.now.utc.to_i,
|
||||||
error_count: 0,
|
error_count: 0,
|
||||||
|
headers: headers,
|
||||||
|
remote_id: remote_ip,
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
}
|
}
|
||||||
|
@ -154,6 +158,7 @@ EventMachine.run {
|
||||||
event: data['event'],
|
event: data['event'],
|
||||||
payload: data,
|
payload: data,
|
||||||
session: @clients[client_id][:session],
|
session: @clients[client_id][:session],
|
||||||
|
remote_ip: @clients[client_id][:remote_id],
|
||||||
client_id: client_id,
|
client_id: client_id,
|
||||||
clients: @clients,
|
clients: @clients,
|
||||||
options: @options,
|
options: @options,
|
||||||
|
@ -227,6 +232,11 @@ EventMachine.run {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def get_remote_ip(headers)
|
||||||
|
return headers['X-Forwarded-For'] if headers && headers['X-Forwarded-For']
|
||||||
|
nil
|
||||||
|
end
|
||||||
|
|
||||||
def websocket_send(client_id, data)
|
def websocket_send(client_id, data)
|
||||||
if data.class != Array
|
if data.class != Array
|
||||||
msg = "[#{data.to_json}]"
|
msg = "[#{data.to_json}]"
|
||||||
|
|
Loading…
Reference in a new issue