WEBSocket 0.0.1 → 0.0.9b

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.
@@ -13,7 +13,7 @@ Gem::Specification.new do |gem|
13
13
  Establish a websocket communication using Ruby standard sockets or Celluloid::IO sockets if required.
14
14
  EOS
15
15
  gem.summary = %q{Establish a websocket communication}
16
- gem.homepage = "https://github.com/Ezveus/ruby-websocket"
16
+ gem.homepage = "https://github.com/Ezveus/WEBSocket"
17
17
 
18
18
  gem.files = `git ls-files`.split($/)
19
19
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
@@ -1,3 +1,5 @@
1
+ require "forwardable"
2
+
1
3
  require "websocket"
2
4
  require "uri"
3
5
 
@@ -1,32 +1,116 @@
1
1
  module WEBSocket
2
- class Server
2
+ class Server
3
+ extend Forwardable
4
+ def_delegators :@server, :listen, :sysaccept, :close, :closed?, :addr
3
5
 
4
- if defined? Celluloid::IO
5
- UnderlyingServer = Celluloid::IO::TCPServer
6
- else
7
- UnderlyingServer = TCPSocket
6
+ class AcceptedSocket
7
+ extend Forwardable
8
+ attr_reader :status
9
+
10
+ def_delegators :@socket, :close, :closed?
11
+ def_delegators :@socket, :addr, :peeraddr, :setsockopt
12
+
13
+ def acquire_ownership type
14
+ @socket.acquire_ownership type
15
+ end
16
+
17
+ def connect
18
+ @handshake = WebSocket::Handshake::Server.new
19
+ msg = @socket.readpartial 4096
20
+ @handshake << msg
21
+ until @handshake.finished?
22
+ msg = @socket.readpartial 4096
23
+ @handshake << msg
24
+ end
25
+ if @handshake.valid?
26
+ @socket.write @handshake.to_s
27
+ @status = :connected
28
+ end
29
+ self
30
+ end
31
+
32
+ def evented?
33
+ false
34
+ end
35
+
36
+ def initialize socket
37
+ @socket = socket
38
+ @status = :disconnected
39
+ end
40
+
41
+ def read length = nil, buffer = nil
42
+ s = @socket.read length, buffer
43
+ frame = WebSocket::Frame::Incoming::Server.new :version => @handshake.version
44
+ frame << s
45
+ frame.next.to_s
46
+ end
47
+
48
+ def read_nonblock length, buffer = nil
49
+ buffer ||= ''
50
+
51
+ s = @socket.read length, buffer
52
+ frame = WebSocket::Frame::Incoming::Server.new :version => @handshake.version
53
+ frame << s
54
+ frame.next.to_s
55
+ end
56
+
57
+ def readpartial length, buffer = nil
58
+ s = @socket.readpartial length, buffer
59
+ frame = WebSocket::Frame::Incoming::Server.new :version => @handshake.version
60
+ frame << s
61
+ frame.next.to_s
62
+ end
63
+
64
+ def release_ownership type
65
+ @socket.release_ownership type
66
+ end
67
+
68
+ def to_io
69
+ @socket
70
+ end
71
+
72
+ def wait_readable
73
+ @socket.wait_readable
74
+ end
75
+
76
+ def wait_writable
77
+ @socket.wait_writable
78
+ end
79
+
80
+ def write s
81
+ frame = WebSocket::Frame::Outgoing::Server.new :version => @handshake.version, :data => s, :type => :text
82
+ @socket.write frame.to_s
83
+ end
84
+
85
+ def write_nonblock s
86
+ frame = WebSocket::Frame::Outgoing::Server.new :version => @handshake.version, :data => s, :type => :text
87
+ @socket.write_nonblock frame.to_s
88
+ end
89
+
90
+ def << s
91
+ frame = WebSocket::Frame::Outgoing::Server.new :version => @handshake.version, :data => s, :type => :text
92
+ @socket << frame.to_s
93
+ end
8
94
  end
9
-
95
+
10
96
  def initialize hostname, port
11
- @server = UnderlyingServer.new hostname, port
97
+ @server = Celluloid::IO::TCPServer.new hostname, port
12
98
  end
13
99
 
14
100
  def accept
15
- WEBSocket::Socket.from_underlying_socket @server.accept
101
+ AcceptedSocket.new(@server.accept).connect
16
102
  end
17
103
 
18
104
  def accept_nonblock
19
- Celluloid::IO::TCPSocket.from_ruby_socket @server.accept_nonblock
105
+ AcceptedSocket.new(@server.accept_nonblock).connect
20
106
  end
21
107
 
22
108
  def to_io
23
109
  @server
24
110
  end
25
111
 
26
- # Are we inside a Celluloid ::IO actor?
27
112
  def evented?
28
- actor = Thread.current[:actor]
29
- actor && actor.mailbox.is_a?(Celluloid::IO::Mailbox)
113
+ false
30
114
  end
31
115
  end
32
116
  end
@@ -1,16 +1,12 @@
1
1
  module WEBSocket
2
2
  class Socket
3
+ extend Forwardable
3
4
  attr_reader :status
4
5
 
5
- def self.from_underlying_socket socket
6
- end
6
+ def_delegators :@socket, :close, :closed?
7
+ def_delegators :@socket, :addr, :peeraddr, :setsockopt
7
8
 
8
9
  def acquire_ownership type
9
- @socket.acquire_ownership type
10
- end
11
-
12
- def close
13
- @socket.close
14
10
  end
15
11
 
16
12
  def connect host, port
@@ -22,7 +18,7 @@ module WEBSocket
22
18
  end
23
19
 
24
20
  def evented?
25
- @socket.evented?
21
+ false
26
22
  end
27
23
 
28
24
  def initialize rhost, rport, lhost = nil, lport = nil
@@ -38,6 +34,15 @@ module WEBSocket
38
34
  frame.to_s
39
35
  end
40
36
 
37
+ def read_nonblock length, buffer = nil
38
+ buffer ||= ''
39
+
40
+ @socket.read_nonblock length, buffer
41
+ frame = WebSocket::Frame::Incoming::Client.new :version => @handshake.version
42
+ frame << buffer
43
+ frame.to_s
44
+ end
45
+
41
46
  def readpartial length, buffer = nil
42
47
  s = @socket.readpartial length, buffer
43
48
  frame = WebSocket::Frame::Incoming::Client.new :version => @handshake.version
@@ -46,7 +51,6 @@ module WEBSocket
46
51
  end
47
52
 
48
53
  def release_ownership type
49
- @socket.release_ownership type
50
54
  end
51
55
 
52
56
  def to_io
@@ -54,11 +58,9 @@ module WEBSocket
54
58
  end
55
59
 
56
60
  def wait_readable
57
- @socket.wait_readable
58
61
  end
59
62
 
60
63
  def wait_writable
61
- @socket.wait_writable
62
64
  end
63
65
 
64
66
  def write s
@@ -66,6 +68,11 @@ module WEBSocket
66
68
  @socket.write frame.to_s
67
69
  end
68
70
 
71
+ def write_nonblock s
72
+ frame = WebSocket::Frame::Outgoing::Client.new :version => @handshake.version, :data => s, :type => :text
73
+ @socket.write_nonblock frame.to_s
74
+ end
75
+
69
76
  def << s
70
77
  frame = WebSocket::Frame::Outgoing::Client.new :version => @handshake.version, :data => s, :type => :text
71
78
  @socket << frame.to_s
@@ -1,4 +1,4 @@
1
1
  module WEBSocket
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.9b"
3
3
  DATE = Time.now.to_s.split[0]
4
4
  end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: WEBSocket
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
5
- prerelease:
4
+ version: 0.0.9b
5
+ prerelease: 5
6
6
  platform: ruby
7
7
  authors:
8
8
  - Matthieu "Ezveus" Ciappara
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-09 00:00:00.000000000 Z
12
+ date: 2013-01-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: websocket
@@ -57,7 +57,7 @@ files:
57
57
  - lib/WEBSocket/server.rb
58
58
  - lib/WEBSocket/socket.rb
59
59
  - lib/WEBSocket/version.rb
60
- homepage: https://github.com/Ezveus/ruby-websocket
60
+ homepage: https://github.com/Ezveus/WEBSocket
61
61
  licenses: []
62
62
  post_install_message:
63
63
  rdoc_options: []
@@ -72,9 +72,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
72
72
  required_rubygems_version: !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
- - - ! '>='
75
+ - - ! '>'
76
76
  - !ruby/object:Gem::Version
77
- version: '0'
77
+ version: 1.3.1
78
78
  requirements: []
79
79
  rubyforge_project:
80
80
  rubygems_version: 1.8.24