Class: SockJS::Transports::WebSocket
Instance Attribute Summary
Attributes inherited from Endpoint
#connection, #options
#method, #prefix
Instance Method Summary
collapse
#closing_frame, #get_session, #heartbeat_frame, #messages_frame, #opening_frame, #request_closed
#exception_response, #handle_session_unavailable, #request_data, #response_beginning, #server_key
routing_prefix
Methods inherited from Endpoint
#call, #empty_string, #error_content_type, #handle, #handle_http_error, #initialize, #inspect, #response_class, #setup_response
#add_route, #add_routes, #endpoints, #register, #route_conditions, #routing_prefix
Instance Method Details
#build_error_response(request) ⇒ Object
82
83
84
|
# File 'lib/sockjs/transports/websocket.rb', line 82
def build_error_response(request)
response = response_class.new(request)
end
|
#build_response(request) ⇒ Object
72
73
74
75
76
77
78
79
80
|
# File 'lib/sockjs/transports/websocket.rb', line 72
def build_response(request)
SockJS.debug "Upgrading to WebSockets ..."
web_socket = Faye::WebSocket.new(request.env)
web_socket.extend(WSDebuggingMixin)
return web_socket
end
|
#disabled? ⇒ Boolean
52
53
54
|
# File 'lib/sockjs/transports/websocket.rb', line 52
def disabled?
!options[:websocket]
end
|
128
129
130
131
|
# File 'lib/sockjs/transports/websocket.rb', line 128
def (event)
SockJS.debug "Received message event: #{event.data.inspect}"
event.data
end
|
#finish_response(web_socket) ⇒ Object
124
125
126
|
# File 'lib/sockjs/transports/websocket.rb', line 124
def finish_response(web_socket)
web_socket.close
end
|
115
116
117
|
# File 'lib/sockjs/transports/websocket.rb', line 115
def format_frame(response, frame)
frame.to_s
end
|
#handle_request(request) ⇒ Object
60
61
62
63
64
65
66
67
68
69
70
|
# File 'lib/sockjs/transports/websocket.rb', line 60
def handle_request(request)
if not @options[:websocket]
raise HttpError.new(404, "WebSockets Are Disabled")
elsif request.env["HTTP_UPGRADE"].to_s.downcase != "websocket"
raise HttpError.new(400, 'Can "Upgrade" only to "WebSocket".')
elsif not ["Upgrade", "keep-alive, Upgrade"].include?(request.env["HTTP_CONNECTION"])
raise HttpError.new(400, '"Connection" must be "Upgrade".')
end
super
end
|
#process_session(session, web_socket) ⇒ Object
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
# File 'lib/sockjs/transports/websocket.rb', line 86
def process_session(session, web_socket)
web_socket.onopen = lambda do |event|
begin
session.attach_consumer(web_socket, self)
rescue Object => ex
SockJS::debug "Error opening (#{event.inspect[0..40]}) websocket: #{ex.inspect}"
end
end
web_socket.onmessage = lambda do |event|
begin
session.receive_message((event))
rescue Object => ex
SockJS::debug "Error receiving message on websocket (#{event.inspect[0..40]}): #{ex.inspect}"
web_socket.close
end
end
web_socket.onclose = lambda do |event|
begin
session.close
rescue Object => ex
SockJS::debug "Error closing websocket (#{event.inspect[0..40]}): #{ex.inspect}"
end
end
end
|
#send_data(web_socket, data) ⇒ Object
119
120
121
122
|
# File 'lib/sockjs/transports/websocket.rb', line 119
def send_data(web_socket, data)
web_socket.send(data)
return data.length
end
|
#session_key(ws) ⇒ Object
56
57
58
|
# File 'lib/sockjs/transports/websocket.rb', line 56
def session_key(ws)
ws.object_id.to_s
end
|