Merge pull request #95 from mackuba/binary_format

added :binary_data_format option
This commit is contained in:
James Coglan
2025-05-24 13:12:01 +01:00
committed by GitHub
2 changed files with 18 additions and 9 deletions
+15 -8
View File
@@ -71,15 +71,16 @@ module WebSocket
def initialize(socket, options = {})
super()
Driver.validate_options(options, [:max_length, :masking, :require_masking, :protocols])
Driver.validate_options(options, [:max_length, :masking, :require_masking, :protocols, :binary_data_format])
@socket = socket
@reader = StreamReader.new
@options = options
@max_length = options[:max_length] || MAX_LENGTH
@headers = Headers.new
@queue = []
@ready_state = 0
@socket = socket
@reader = StreamReader.new
@options = options
@max_length = options[:max_length] || MAX_LENGTH
@headers = Headers.new
@queue = []
@ready_state = 0
@binary_data_format = options[:binary_data_format] || :array
end
def state
@@ -224,6 +225,12 @@ module WebSocket
raise ConfigurationError, "Unrecognized option: #{ key.inspect }"
end
end
if options[:binary_data_format]
unless [:array, :string].include?(options[:binary_data_format])
raise ConfigurationError, "Invalid :binary_data_format: #{options[:binary_data_format].inspect}"
end
end
end
def self.websocket?(env)
+3 -1
View File
@@ -403,7 +403,9 @@ module WebSocket
payload = Driver.encode(payload, Encoding::UTF_8)
payload = nil unless payload.valid_encoding?
when OPCODES[:binary]
payload = payload.bytes.to_a
if @binary_data_format == :array
payload = payload.bytes.to_a
end
end
if payload