celluloid-websocket-client 0.0.1

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.
@@ -0,0 +1,15 @@
1
+ require 'websocket/protocol'
2
+ require 'celluloid'
3
+ require 'celluloid/io'
4
+
5
+ module Celluloid
6
+ module WebSocket
7
+ module Client
8
+ def self.new(*args)
9
+ Connection.new(*args)
10
+ end
11
+ end
12
+ end
13
+ end
14
+
15
+ require 'celluloid/websocket/client/connection'
@@ -0,0 +1,50 @@
1
+ require 'forwardable'
2
+
3
+ module Celluloid
4
+ module WebSocket
5
+ module Client
6
+ class Connection
7
+ include Celluloid::IO
8
+ extend Forwardable
9
+
10
+ def initialize(url, handler)
11
+ @url = url
12
+ uri = URI.parse(url)
13
+ port = uri.port || (uri.scheme == "ws" ? 80 : 443)
14
+ @socket = Celluloid::IO::TCPSocket.new(uri.host, port)
15
+ @client = ::WebSocket::Protocol.client(self)
16
+ @handler = handler
17
+
18
+ async.run
19
+ end
20
+ attr_reader :url
21
+
22
+ def run
23
+ @client.onopen do |event|
24
+ @handler.async.on_open if @handler.respond_to?(:on_open)
25
+ end
26
+ @client.onmessage do |event|
27
+ @handler.async.on_message(event.data) if @handler.respond_to?(:on_message)
28
+ end
29
+ @client.onclose do |event|
30
+ @handler.async.on_close(event.code, event.reason) if @handler.respond_to?(:on_close)
31
+ end
32
+
33
+ @client.start
34
+
35
+ loop do
36
+ @client.parse(@socket.readpartial(1024))
37
+ end
38
+ end
39
+
40
+ def_delegators :@client, :text
41
+
42
+ def write(buffer)
43
+ @socket.write buffer
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
49
+
50
+
metadata ADDED
@@ -0,0 +1,98 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: celluloid-websocket-client
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Jeremy Deininger
9
+ - Tim Carey-Smith
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2013-04-22 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: websocket-protocol
17
+ requirement: !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ! '>='
29
+ - !ruby/object:Gem::Version
30
+ version: '0'
31
+ - !ruby/object:Gem::Dependency
32
+ name: celluloid-io
33
+ requirement: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ type: :runtime
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: pry
49
+ requirement: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ description:
64
+ email:
65
+ - jeremydeininger@gmail.com
66
+ - tim@spork.in
67
+ executables: []
68
+ extensions: []
69
+ extra_rdoc_files: []
70
+ files:
71
+ - lib/celluloid/websocket/client/connection.rb
72
+ - lib/celluloid/websocket/client.rb
73
+ homepage:
74
+ licenses: []
75
+ post_install_message:
76
+ rdoc_options: []
77
+ require_paths:
78
+ - lib
79
+ required_ruby_version: !ruby/object:Gem::Requirement
80
+ none: false
81
+ requirements:
82
+ - - ! '>='
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ required_rubygems_version: !ruby/object:Gem::Requirement
86
+ none: false
87
+ requirements:
88
+ - - ! '>='
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ requirements: []
92
+ rubyforge_project:
93
+ rubygems_version: 1.8.23
94
+ signing_key:
95
+ specification_version: 3
96
+ summary: websocket client using celluloid-io
97
+ test_files: []
98
+ has_rdoc: