Skip to content

Commit f1c9331

Browse files
authored
Merge pull request #95 from mackuba/binary_format
added :binary_data_format option
2 parents 3e099cb + 61bfc07 commit f1c9331

2 files changed

Lines changed: 18 additions & 9 deletions

File tree

lib/websocket/driver.rb

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -71,15 +71,16 @@ def Mask.mask(payload, mask)
7171

7272
def initialize(socket, options = {})
7373
super()
74-
Driver.validate_options(options, [:max_length, :masking, :require_masking, :protocols])
74+
Driver.validate_options(options, [:max_length, :masking, :require_masking, :protocols, :binary_data_format])
7575

76-
@socket = socket
77-
@reader = StreamReader.new
78-
@options = options
79-
@max_length = options[:max_length] || MAX_LENGTH
80-
@headers = Headers.new
81-
@queue = []
82-
@ready_state = 0
76+
@socket = socket
77+
@reader = StreamReader.new
78+
@options = options
79+
@max_length = options[:max_length] || MAX_LENGTH
80+
@headers = Headers.new
81+
@queue = []
82+
@ready_state = 0
83+
@binary_data_format = options[:binary_data_format] || :array
8384
end
8485

8586
def state
@@ -224,6 +225,12 @@ def self.validate_options(options, valid_keys)
224225
raise ConfigurationError, "Unrecognized option: #{ key.inspect }"
225226
end
226227
end
228+
229+
if options[:binary_data_format]
230+
unless [:array, :string].include?(options[:binary_data_format])
231+
raise ConfigurationError, "Invalid :binary_data_format: #{options[:binary_data_format].inspect}"
232+
end
233+
end
227234
end
228235

229236
def self.websocket?(env)

lib/websocket/driver/hybi.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -403,7 +403,9 @@ def emit_message
403403
payload = Driver.encode(payload, Encoding::UTF_8)
404404
payload = nil unless payload.valid_encoding?
405405
when OPCODES[:binary]
406-
payload = payload.bytes.to_a
406+
if @binary_data_format == :array
407+
payload = payload.bytes.to_a
408+
end
407409
end
408410

409411
if payload

0 commit comments

Comments
 (0)