celluloid-websocket-client 0.0.1

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