@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 +6 -3
- package/package.json +1 -1
- package/rts/index.js +23 -8
- package/src/access-control/apply_policies.js +0 -1
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 {
|
|
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
|
-
|
|
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
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
|
|
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
|
-
|
|
406
|
-
|
|
407
|
-
|
|
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
|
-
|
|
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}
|