seapig-server 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/seapig-server +12 -12
- data/lib/seapig-server/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b8d1f455c52ec13b86faf4b292efdff4c3271af4
|
4
|
+
data.tar.gz: ad58fb2f509fd5f61e70e3d57380d550862cfc96
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ff1c37ef39bb2348c3722c510ded44ceac377393a57b1ed6e70d6c8fb23c727389ba2883b1b4eb1e871649784319e17b186a690d2aa9c6ae9dc653ccfefc27b6
|
7
|
+
data.tar.gz: 79a48ab267ec13b1dcd5661c361143e2b6178cd4b186129a9f37a576acb13b0a3963bd32272b524f814e82b2695dfc77ff514c81fc7ea05d0213f64bc44358d9
|
data/bin/seapig-server
CHANGED
@@ -65,8 +65,6 @@ end
|
|
65
65
|
|
66
66
|
|
67
67
|
if OPTIONS["debug-memory"]
|
68
|
-
#require 'memory_profiler'
|
69
|
-
#MemoryProfiler.start
|
70
68
|
require 'objspace'
|
71
69
|
ObjectSpace.trace_object_allocations_start
|
72
70
|
$dump_heap = false
|
@@ -305,6 +303,8 @@ class SeapigObjectStore
|
|
305
303
|
}
|
306
304
|
end
|
307
305
|
enqueue(object)
|
306
|
+
else
|
307
|
+
client.object_destroy(id) if data != nil
|
308
308
|
end
|
309
309
|
|
310
310
|
if was_producing and not client.producing
|
@@ -863,11 +863,12 @@ class SeapigWebsocketClient
|
|
863
863
|
end
|
864
864
|
|
865
865
|
|
866
|
-
def destroy
|
867
|
-
puts "Client disconnected
|
866
|
+
def destroy(reason)
|
867
|
+
puts "Client %s disconnected: %s\n"%[id, reason.inspect] if DEBUG
|
868
868
|
@@clients_by_socket.delete(@socket)
|
869
869
|
@seapig_object_store.client_unregister(self, self)
|
870
870
|
@seapig_object_store.connection_unregister(self)
|
871
|
+
@socket.close
|
871
872
|
end
|
872
873
|
|
873
874
|
|
@@ -983,17 +984,17 @@ class SeapigWebsocketClient
|
|
983
984
|
|
984
985
|
|
985
986
|
def self.send_pings
|
986
|
-
@@clients_by_socket.keys.each { |
|
987
|
+
@@clients_by_socket.keys.each { |client_socket| client_socket.ping }
|
987
988
|
end
|
988
989
|
|
989
990
|
|
990
991
|
def self.send_heartbeats
|
991
|
-
@@clients_by_socket.each_pair { |
|
992
|
+
@@clients_by_socket.each_pair { |client_socket, client| client_socket.send Oj.dump('action' => 'heartbeat') if client.options['heartbeat'] }
|
992
993
|
end
|
993
994
|
|
994
995
|
|
995
996
|
def self.check_ping_timeouts
|
996
|
-
@@clients_by_socket.each_pair { |
|
997
|
+
@@clients_by_socket.each_pair { |client_socket, client| SeapigWebsocketClient[client_socket].destroy("Ping timeout") if Time.new - client.pong_time > 60 }
|
997
998
|
end
|
998
999
|
|
999
1000
|
end
|
@@ -1035,8 +1036,8 @@ EM.run {
|
|
1035
1036
|
WebSocket::EventMachine::Server.start(host: HOST, port: PORT) { |client_socket|
|
1036
1037
|
|
1037
1038
|
client_socket.onmessage &safety_net { |message_json|
|
1039
|
+
next if not client = SeapigWebsocketClient[client_socket]
|
1038
1040
|
started_at = Time.new
|
1039
|
-
client = SeapigWebsocketClient[client_socket]
|
1040
1041
|
message = Oj.load message_json
|
1041
1042
|
puts "-"*80 + ' ' + Time.new.to_s if DEBUG
|
1042
1043
|
print "Message:\n from: %-20s\n action: %-30s\n param: %-50s "%[client.id, message['action'], Oj.dump(message.select { |k,v| ['pattern','id','options'].include?(k) })] if DEBUG
|
@@ -1077,8 +1078,9 @@ EM.run {
|
|
1077
1078
|
|
1078
1079
|
|
1079
1080
|
client_socket.onopen &safety_net { SeapigWebsocketClient.new(seapig_object_store, client_socket) }
|
1080
|
-
client_socket.onclose &safety_net { SeapigWebsocketClient[client_socket].destroy if SeapigWebsocketClient[client_socket] }
|
1081
|
-
client_socket.
|
1081
|
+
client_socket.onclose &safety_net { SeapigWebsocketClient[client_socket].destroy("Connection closed") if SeapigWebsocketClient[client_socket] }
|
1082
|
+
client_socket.onerror &safety_net { |error| SeapigWebsocketClient[client_socket].destroy(error) if SeapigWebsocketClient[client_socket] }
|
1083
|
+
client_socket.onpong &safety_net { SeapigWebsocketClient[client_socket].pong if SeapigWebsocketClient[client_socket] }
|
1082
1084
|
}
|
1083
1085
|
|
1084
1086
|
puts "Listening on %s:%s"%[HOST,PORT] if INFO or DEBUG
|
@@ -1097,8 +1099,6 @@ EM.run {
|
|
1097
1099
|
if $dump_heap
|
1098
1100
|
$dump_heap = false
|
1099
1101
|
GC.start
|
1100
|
-
#MemoryProfiler.stop.pretty_print(to_file: "memory_"+Time.new.strftime("%Y%m%d%H%M%S"))
|
1101
|
-
#MemoryProfiler.start
|
1102
1102
|
open("heap_dump_"+Time.new.strftime("%Y%m%d%H%M%S"),"w") { |file| ObjectSpace.dump_all(output: file) }
|
1103
1103
|
end
|
1104
1104
|
})
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: seapig-server
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- yunta
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-03-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: websocket-eventmachine-server
|
@@ -94,7 +94,7 @@ dependencies:
|
|
94
94
|
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
|
-
description:
|
97
|
+
description: Seapig is a master-slave object sharing system.
|
98
98
|
email:
|
99
99
|
- maciej.blomberg@mikoton.com
|
100
100
|
executables:
|