em-websocket-server 0.1.2 → 0.13

Sign up to get free protection for your applications and to get access to all the features.
@@ -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