summaryrefslogtreecommitdiff
path: root/vendor/bundle/ruby/3.4.0/gems/em-websocket-0.5.3/lib/em-websocket/websocket.rb
diff options
context:
space:
mode:
authorBenjamin Sanders <ben@Benjamins-MacBook-Pro.local>2025-10-11 10:34:24 -0400
committerBenjamin Sanders <ben@Benjamins-MacBook-Pro.local>2025-10-11 10:34:24 -0400
commit5571dc766e2143e39762ff0b47c41d1c2e154f4c (patch)
treef4f124d314a7e76c04484515aa0fd1f2e271a601 /vendor/bundle/ruby/3.4.0/gems/em-websocket-0.5.3/lib/em-websocket/websocket.rb
parent359f3309c97fc894b63e0a295c76ab298504d635 (diff)
Vendor bundled gems for deployment
Diffstat (limited to 'vendor/bundle/ruby/3.4.0/gems/em-websocket-0.5.3/lib/em-websocket/websocket.rb')
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/em-websocket-0.5.3/lib/em-websocket/websocket.rb56
1 files changed, 56 insertions, 0 deletions
diff --git a/vendor/bundle/ruby/3.4.0/gems/em-websocket-0.5.3/lib/em-websocket/websocket.rb b/vendor/bundle/ruby/3.4.0/gems/em-websocket-0.5.3/lib/em-websocket/websocket.rb
new file mode 100644
index 0000000..02e4d86
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/em-websocket-0.5.3/lib/em-websocket/websocket.rb
@@ -0,0 +1,56 @@
+module EventMachine
+ module WebSocket
+ class << self
+ attr_accessor :max_frame_size
+ attr_accessor :close_timeout
+ end
+ @max_frame_size = 10 * 1024 * 1024 # 10MB
+ # Connections are given 60s to close after being sent a close handshake
+ @close_timeout = 60
+
+ # All errors raised by em-websocket should descend from this class
+ class WebSocketError < RuntimeError; end
+
+ # Used for errors that occur during WebSocket handshake
+ class HandshakeError < WebSocketError; end
+
+ # Used for errors which should cause the connection to close.
+ # See RFC6455 ยง7.4.1 for a full description of meanings
+ class WSProtocolError < WebSocketError
+ def code; 1002; end
+ end
+
+ class InvalidDataError < WSProtocolError
+ def code; 1007; end
+ end
+
+ # 1009: Message too big to process
+ class WSMessageTooBigError < WSProtocolError
+ def code; 1009; end
+ end
+
+ # Start WebSocket server, including starting eventmachine run loop
+ def self.start(options, &blk)
+ EM.epoll
+ EM.run {
+ trap("TERM") { stop }
+ trap("INT") { stop }
+
+ run(options, &blk)
+ }
+ end
+
+ # Start WebSocket server inside eventmachine run loop
+ def self.run(options)
+ host, port = options.values_at(:host, :port)
+ EM.start_server(host, port, Connection, options) do |c|
+ yield c
+ end
+ end
+
+ def self.stop
+ puts "Terminating WebSocket Server"
+ EM.stop
+ end
+ end
+end