@rpcbase/server 0.376.0 → 0.377.0

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.
package/boot/server.js CHANGED
@@ -6,19 +6,22 @@ const rb_server_plugin = require("rb-plugin-server")
6
6
 
7
7
  const http = require("http")
8
8
 
9
- const {rpc_router, client_router, express} = require("../")
9
+ const {client_router, express} = require("../")
10
+
11
+ const {init_rts} = require("../rts")
10
12
 
11
- const realtime_state = require("../rts")
12
13
 
13
14
  const {SERVER_PORT} = process.env
14
15
 
15
16
  const app = express()
16
17
  const server = http.createServer(app)
17
18
 
18
- realtime_state(server)
19
+ init_rts(server)
19
20
 
20
21
  rb_server_plugin.default(app)
21
22
 
23
+ client_router(app)
24
+
22
25
  server.listen(SERVER_PORT, "0.0.0.0", () => {
23
26
  console.log(`listening on 0.0.0.0:${SERVER_PORT}`)
24
27
  })
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rpcbase/server",
3
- "version": "0.376.0",
3
+ "version": "0.377.0",
4
4
  "license": "SSPL-1.0",
5
5
  "main": "./index.js",
6
6
  "scripts": {
package/rts/index.js CHANGED
@@ -24,8 +24,8 @@ const QUERY_MAX_LIMIT = 4096
24
24
  // TODO: does this even support multiple clients ?
25
25
  // TODO: investigate multiple change streams event triggers per client
26
26
  // TODO: add tracing
27
-
28
27
  const _sockets = {}
28
+ const _handlers = []
29
29
  const _change_streams = {}
30
30
  // we index both queries and socket queries
31
31
  // to avoid going through all queries when a socket disconnects
@@ -87,7 +87,7 @@ const dispatch_doc_change = (model, doc) => {
87
87
  // socket was destroyed
88
88
  // TODO: remove socket id from _queries when destroyed
89
89
  if (!s) {
90
- log("NO SOCKET RETURNING")
90
+ log("NO SOCKET, RETURNING")
91
91
  return
92
92
  }
93
93
  // console.log("dipatch change", query_key)
@@ -285,7 +285,7 @@ const run_query = async(socket_id, {model_name, query, query_key, options}) => {
285
285
  }
286
286
 
287
287
  const query_options = get_query_options(ctx, options)
288
-
288
+ // log("QUERY", query)
289
289
  const query_promise = model.find(query, options.projection, query_options)
290
290
 
291
291
  if (query_options.sort) {
@@ -358,7 +358,7 @@ const disconnect_handler = (socket_id, reason) => {
358
358
  }
359
359
 
360
360
 
361
- const rts_server = async(server) => {
361
+ const init_rts = async(server) => {
362
362
  // register the delete plugin
363
363
  mongoose.plugin(mongoose_delete_plugin)
364
364
  // txn plugin
@@ -402,9 +402,11 @@ const rts_server = async(server) => {
402
402
 
403
403
  io.on("connection", (socket) => {
404
404
  _sockets[socket.id] = socket
405
- console.log("socket connected", socket.id)
406
- //
407
- socket.on("register_query", (payload) => {
405
+
406
+ log("socket connected", socket.id)
407
+
408
+ // RTS handlers
409
+ socket.on("registerQuery", (payload) => {
408
410
  add_change_stream(socket.id, payload)
409
411
  })
410
412
 
@@ -419,12 +421,25 @@ const rts_server = async(server) => {
419
421
  console.log("run_query caught error", err)
420
422
  }
421
423
  })
424
+ // !RTS handlers
425
+
426
+ // register_rts_handler: custom server generic handlers
427
+ const cleanup_fns = _handlers.map((handler_fn) => handler_fn(socket))
422
428
 
423
429
  socket.on("disconnect", (reason) => {
424
430
  disconnect_handler(socket.id, reason)
431
+ cleanup_fns
432
+ .filter((fn) => typeof fn === "function")
433
+ .forEach((fn) => fn())
425
434
  })
426
435
  })
427
436
  }
428
437
 
429
438
 
430
- module.exports = rts_server
439
+ const register_rts_handler = (handler_fn) => {
440
+ console.log("REGister handler", handler_fn)
441
+ _handlers.push(handler_fn)
442
+ }
443
+
444
+
445
+ module.exports = {init_rts, register_rts_handler}
@@ -11,7 +11,6 @@ const perm_operations = ["create", "read", "update", "delete"]
11
11
 
12
12
  // TODO: add LRU cache for policies
13
13
 
14
-
15
14
  // Owner
16
15
  // the creator of the document, or an user_id that is in the "owners" field
17
16