em-websocket-server 0.1.2 → 0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,17 +1,17 @@
1
1
  module WebSocket
2
2
 
3
- class Util
3
+ class Util
4
4
 
5
- @@path_regex = /^GET (\/[^\s]*) HTTP\/1\.1$/
6
- @@hs_regex = /^HTTP\/1\.1 101 Web Socket Protocol Handshake$/
7
- @@header_regex = /^([^:]+):\s*([^$]+)/
5
+ @@path_regex = /^GET (\/[^\s]*) HTTP\/1\.1$/
6
+ @@hs_regex = /^HTTP\/1\.1 101 Web Socket Protocol Handshake$/
7
+ @@header_regex = /^([^:]+):\s*([^$]+)/
8
8
 
9
- # Parse http style headers into a ruby hash
10
- def self.parse_headers data
11
- lines = data.split("\r\n")
9
+ # Parse http style headers into a ruby hash
10
+ def self.parse_headers data
11
+ lines = data.split("\r\n")
12
12
  line = lines.shift
13
13
 
14
- headers = {}
14
+ headers = {}
15
15
 
16
16
  case line
17
17
  when @@path_regex
@@ -22,29 +22,34 @@ module WebSocket
22
22
  throw "Unrecognized Header!"
23
23
  end
24
24
 
25
+ while line = lines.shift
26
+ if line.chomp.empty?
27
+ break
28
+ end
29
+
30
+ kvp = @@header_regex.match(line)
31
+ headers[kvp[1].strip.downcase.to_sym] = kvp[2].strip
32
+ end
25
33
 
26
- lines.each do |line|
27
- kvp = @@header_regex.match(line)
28
- headers[kvp[1].strip.downcase.to_sym] = kvp[2].strip
29
- end
34
+ challenge = lines.pop if lines
30
35
 
31
- headers
32
- end
36
+ [headers, challenge]
37
+ end
33
38
 
34
- # encode ruby hash into HTTP style headers
35
- def self.encode_headers data
36
- result = ""
39
+ # encode ruby hash into HTTP style headers
40
+ def self.encode_headers data
41
+ result = ""
37
42
 
38
- data.each_pair do |k,v|
39
- result << k.to_s
40
- result << ": "
41
- result << v.to_s
42
- result << "\r\n"
43
- end
43
+ data.each_pair do |k,v|
44
+ result << k.to_s
45
+ result << ": "
46
+ result << v.to_s
47
+ result << "\r\n"
48
+ end
44
49
 
45
- result << "\r\n"
46
- result
47
- end
48
-
50
+ result << "\r\n"
51
+ result
52
+ end
53
+
49
54
  end
50
55
  end
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: em-websocket-server
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ hash: 17
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 13
9
+ version: "0.13"
5
10
  platform: ruby
6
11
  authors:
7
12
  - Dan Simpson
@@ -14,14 +19,20 @@ default_executable:
14
19
  dependencies:
15
20
  - !ruby/object:Gem::Dependency
16
21
  name: eventmachine
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
20
25
  requirements:
21
26
  - - ">="
22
27
  - !ruby/object:Gem::Version
28
+ hash: 39
29
+ segments:
30
+ - 0
31
+ - 12
32
+ - 4
23
33
  version: 0.12.4
24
- version:
34
+ type: :runtime
35
+ version_requirements: *id001
25
36
  description: An evented ruby websocket server built on top of EventMachine
26
37
  email: dan.simpson@gmail.com
27
38
  executables: []
@@ -33,11 +44,18 @@ extra_rdoc_files: []
33
44
  files:
34
45
  - README.markdown
35
46
  - em-websocket-server.gemspec
47
+ - examples/chat.rb
48
+ - examples/chat.html
49
+ - examples/timesync.html
50
+ - examples/timesync.rb
51
+ - examples/tictactoe/tictactoe.html
52
+ - examples/tictactoe/tictactoe.js
53
+ - examples/tictactoe/tictactoe.rb
36
54
  - lib/web_socket.rb
37
- - lib/web_socket/util.rb
38
- - lib/web_socket/frame.rb
39
55
  - lib/web_socket/client.rb
40
56
  - lib/web_socket/server.rb
57
+ - lib/web_socket/frame.rb
58
+ - lib/web_socket/util.rb
41
59
  has_rdoc: true
42
60
  homepage: http://github.com/dansimpson/em-websocket-server
43
61
  licenses: []
@@ -48,21 +66,27 @@ rdoc_options: []
48
66
  require_paths:
49
67
  - lib
50
68
  required_ruby_version: !ruby/object:Gem::Requirement
69
+ none: false
51
70
  requirements:
52
71
  - - ">="
53
72
  - !ruby/object:Gem::Version
73
+ hash: 3
74
+ segments:
75
+ - 0
54
76
  version: "0"
55
- version:
56
77
  required_rubygems_version: !ruby/object:Gem::Requirement
78
+ none: false
57
79
  requirements:
58
80
  - - ">="
59
81
  - !ruby/object:Gem::Version
82
+ hash: 3
83
+ segments:
84
+ - 0
60
85
  version: "0"
61
- version:
62
86
  requirements: []
63
87
 
64
88
  rubyforge_project:
65
- rubygems_version: 1.3.5
89
+ rubygems_version: 1.3.7
66
90
  signing_key:
67
91
  specification_version: 3
68
92
  summary: An evented ruby websocket server built on top of EventMachine