socket2me 0.5.2 → 0.5.3
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.
- checksums.yaml +4 -4
- data/README.md +4 -4
- data/Rakefile +3 -3
- data/bin/console +3 -3
- data/lib/socket2me/configuration.rb +2 -7
- data/lib/socket2me/middleware/add_script_tag.rb +6 -5
- data/lib/socket2me/version.rb +1 -1
- data/lib/socket2me/ws_server.rb +2 -2
- data/lib/socket2me.rb +0 -1
- data/socket2me.gemspec +11 -11
- metadata +2 -3
- data/example/dummy.ru +0 -51
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6a2549d6b2f5aca33cf3810f499e6ec2e73072a0
|
4
|
+
data.tar.gz: cc57ef2e4563c038d70ae47dbc062b53a39b364d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b35633bd814e20f2a019da3a2180759aa85e4c6ffb07ac37ad8651227b7b6cb24485c76b5b296d3faea05b54ca1922880f67044ae83901e20287c4bc13386d34
|
7
|
+
data.tar.gz: efd5dccf618c0f67f27446c41fdb008193045989456ca19eb2e13fce1b6840e8c3bc4585588c1969b15661dfe11383333305c899bcb9458095fbd414cd6d995c
|
data/README.md
CHANGED
@@ -45,16 +45,16 @@ Or install it yourself as:
|
|
45
45
|
|
46
46
|
## Usage
|
47
47
|
|
48
|
-
A full rack example is in `
|
48
|
+
A full rack example is in `examples/dummy.ru`. That app simply creates
|
49
49
|
an HTML page and provides a helper js function to display some output. The
|
50
50
|
example then outputs the server time every second in a background thread.
|
51
51
|
|
52
|
-
To run `
|
52
|
+
To run `examples/dummy.ru`:
|
53
53
|
|
54
54
|
1. checkout the project: `git clone https://github.com/ddrscott/socket2me`
|
55
55
|
2. go into the the socket2me directory: `cd socket2me`
|
56
56
|
3. install requirements: `./bin/setup`
|
57
|
-
4. start a rack server with the example: `rackup
|
57
|
+
4. start a rack server with the example: `rackup examples/dummy.ru`
|
58
58
|
|
59
59
|
### Rack
|
60
60
|
```ruby
|
@@ -80,7 +80,7 @@ After checking out the repo, run `bin/setup` to install dependencies. Then, run
|
|
80
80
|
|
81
81
|
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
82
82
|
|
83
|
-
Spot check everything works by running `rackup
|
83
|
+
Spot check everything works by running `rackup examples/dummy.ru`. The browser
|
84
84
|
should continually append a timestamp below the header.
|
85
85
|
|
86
86
|
## Contributing
|
data/Rakefile
CHANGED
data/bin/console
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
3
|
+
require 'bundler/setup'
|
4
|
+
require 'socket2me'
|
5
5
|
|
6
6
|
# You can add fixtures and/or initialization code here to make experimenting
|
7
7
|
# with your gem easier. You can also use a different console, if you like.
|
8
8
|
|
9
|
-
require
|
9
|
+
require 'pry'
|
10
10
|
Pry.start
|
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'logger'
|
2
2
|
|
3
3
|
module Socket2me
|
4
|
-
|
5
4
|
class Configuration
|
6
5
|
# @attr [String] ws_host for the WebSocket listener
|
7
6
|
attr_accessor :ws_host
|
@@ -20,17 +19,13 @@ module Socket2me
|
|
20
19
|
end
|
21
20
|
|
22
21
|
# @param [Logger] logger to use
|
23
|
-
|
24
|
-
@logger = logger
|
25
|
-
end
|
22
|
+
attr_writer :logger
|
26
23
|
end
|
27
24
|
|
28
25
|
# @yield [Configuration]
|
29
26
|
def self.configure(&block)
|
30
27
|
@config ||= Configuration.new
|
31
|
-
if block_given?
|
32
|
-
block.call @config
|
33
|
-
end
|
28
|
+
block.call @config if block_given?
|
34
29
|
end
|
35
30
|
|
36
31
|
# @return [Configuration] current configuration
|
@@ -3,7 +3,6 @@ require 'em-websocket'
|
|
3
3
|
module Socket2me
|
4
4
|
module Middleware
|
5
5
|
class AddScriptTag
|
6
|
-
|
7
6
|
def initialize(app)
|
8
7
|
@app = app
|
9
8
|
@ws_url = "ws://#{Socket2me.config.ws_host}:#{Socket2me.config.ws_port}"
|
@@ -18,12 +17,14 @@ module Socket2me
|
|
18
17
|
response = @app.call(env)
|
19
18
|
status, headers, body = *response
|
20
19
|
|
21
|
-
return response unless headers['Content-Type']
|
20
|
+
return response unless headers['Content-Type'].include?('text/html')
|
22
21
|
|
23
22
|
# replace the last body with script
|
24
|
-
|
23
|
+
orig_body = body.respond_to?(:body) ? body.body : body.join
|
24
|
+
|
25
|
+
new_body = orig_body.gsub(%r{(</body>)}i, "#{script_tag}\\1")
|
25
26
|
|
26
|
-
|
27
|
+
[status, headers, [new_body]]
|
27
28
|
end
|
28
29
|
|
29
30
|
# @return [String] the outer Javascript tag with WS client script
|
@@ -40,4 +41,4 @@ module Socket2me
|
|
40
41
|
end
|
41
42
|
end
|
42
43
|
end
|
43
|
-
end
|
44
|
+
end
|
data/lib/socket2me/version.rb
CHANGED
data/lib/socket2me/ws_server.rb
CHANGED
@@ -16,8 +16,8 @@ module Socket2me
|
|
16
16
|
# @return [Hash] hash of options compatible with EM::WebSocket#start
|
17
17
|
def ws_options
|
18
18
|
{
|
19
|
-
|
20
|
-
|
19
|
+
host: Socket2me.config.ws_host,
|
20
|
+
port: Socket2me.config.ws_port
|
21
21
|
}
|
22
22
|
end
|
23
23
|
|
data/lib/socket2me.rb
CHANGED
data/socket2me.gemspec
CHANGED
@@ -4,23 +4,23 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
require 'socket2me/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
7
|
+
spec.name = 'socket2me'
|
8
8
|
spec.version = Socket2me::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
9
|
+
spec.authors = ['Scott Pierce']
|
10
|
+
spec.email = ['ddrscott@gmail.com']
|
11
11
|
|
12
|
-
spec.summary =
|
13
|
-
spec.homepage =
|
14
|
-
spec.license =
|
12
|
+
spec.summary = 'Execute Javascript in the browser from the server using WebSockets'
|
13
|
+
spec.homepage = 'https://github.com/ddrscott/socket2me'
|
14
|
+
spec.license = 'MIT'
|
15
15
|
|
16
|
-
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
17
|
-
spec.require_paths = [
|
16
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features|examples)/}) }
|
17
|
+
spec.require_paths = ['lib']
|
18
18
|
|
19
19
|
spec.add_dependency 'rack', '~> 1.6'
|
20
20
|
spec.add_dependency 'em-websocket', '~> 0.5'
|
21
21
|
|
22
|
-
spec.add_development_dependency
|
23
|
-
spec.add_development_dependency
|
24
|
-
spec.add_development_dependency
|
22
|
+
spec.add_development_dependency 'bundler', '~> 1.10'
|
23
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
24
|
+
spec.add_development_dependency 'rspec', '~> 3.4'
|
25
25
|
spec.add_development_dependency 'pry'
|
26
26
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: socket2me
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Scott Pierce
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-03-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rack
|
@@ -110,7 +110,6 @@ files:
|
|
110
110
|
- Rakefile
|
111
111
|
- bin/console
|
112
112
|
- bin/setup
|
113
|
-
- example/dummy.ru
|
114
113
|
- lib/socket2me.rb
|
115
114
|
- lib/socket2me/configuration.rb
|
116
115
|
- lib/socket2me/middleware/add_script_tag.rb
|
data/example/dummy.ru
DELETED
@@ -1,51 +0,0 @@
|
|
1
|
-
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
2
|
-
|
3
|
-
require 'socket2me'
|
4
|
-
|
5
|
-
class Stub
|
6
|
-
|
7
|
-
def initialize
|
8
|
-
Socket2me.configure do |config|
|
9
|
-
config.ws_host = '0.0.0.0'
|
10
|
-
config.ws_port = '3002'
|
11
|
-
end
|
12
|
-
|
13
|
-
Socket2me.start_ws_server
|
14
|
-
end
|
15
|
-
|
16
|
-
def call(_)
|
17
|
-
[200, {'Content-Type' => 'text/html'}, [<<-HTML]]
|
18
|
-
<html>
|
19
|
-
<body>
|
20
|
-
<h1>Stub <small>generated by #{__FILE__}</small></h1>
|
21
|
-
<script>
|
22
|
-
function appendP(text) {
|
23
|
-
var p = document.createElement("p");
|
24
|
-
p.innerHTML = text;
|
25
|
-
document.body.appendChild(p);
|
26
|
-
}
|
27
|
-
</script>
|
28
|
-
</body>
|
29
|
-
</html>
|
30
|
-
HTML
|
31
|
-
end
|
32
|
-
|
33
|
-
def start_counter
|
34
|
-
Thread.abort_on_exception = true
|
35
|
-
Thread.new do
|
36
|
-
while true
|
37
|
-
sleep 1
|
38
|
-
Socket2me.exec_js("appendP('#{Time.now}')")
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
use Socket2me::Middleware::AddScriptTag
|
45
|
-
|
46
|
-
stub = Stub.new
|
47
|
-
stub.start_counter
|
48
|
-
|
49
|
-
run stub
|
50
|
-
|
51
|
-
|