Browse Source

back propagation

master
jfinn 10 months ago
parent
commit
abe741f3d7
5 changed files with 164 additions and 3 deletions
  1. 9
    0
      flask_server/app.py
  2. 0
    1
      flask_server/rld_m2.py
  3. 2
    0
      js_client/jsync_demo.js
  4. 110
    0
      js_client/jsync_demo.old.js
  5. 43
    2
      js_client/jsync_ws.js

+ 9
- 0
flask_server/app.py View File

@@ -60,6 +60,15 @@ def echo(sock):
60 60
 		sock.send(data)
61 61
 
62 62
 
63
+@sock.route('/echo_all')
64
+def echo_all(sock):
65
+	gmod.gx.add_to_channel(sock,"echo_all")
66
+	# send_to_channel("echo_all",msg,"sender")
67
+	while True:
68
+		data = sock.receive()
69
+		# ws.send(data)
70
+		gmod.gx.send_to_channel("echo_all",data,"sender")
71
+
63 72
 
64 73
 # @sock.route('/echo_c1')
65 74
 # def echo_coll(sock):

+ 0
- 1
flask_server/rld_m2.py View File

@@ -65,7 +65,6 @@ def send_to_channel(name,message,sender):
65 65
 
66 66
 
67 67
 
68
-
69 68
 def add_to_channel(sock,name):
70 69
 	pass
71 70
 	gmod.glob["groups"].setdefault(name,set())

+ 2
- 0
js_client/jsync_demo.js View File

@@ -50,6 +50,8 @@ function jsyncdb_init_helper(){
50 50
 		url:'wss://' + window.location.hostname  +`/djc_srv/ws/chat/${room_name}`,
51 51
 		url: `wss://${location.hostname}:5000/echo_c1${location.search}`,
52 52
 		url: `${ws_protocol}//${location.hostname}:5000/echo_c1${location.search}`,
53
+		url: `${ws_protocol}//${location.hostname}:5000/echo${location.search}`,
54
+		url: `${ws_protocol}//${location.hostname}:5000/echo_all${location.search}`,
53 55
 		// o.url = 
54 56
 		socket_name:"ws1",
55 57
 		ord:glob_u.cb.ws,

+ 110
- 0
js_client/jsync_demo.old.js View File

@@ -0,0 +1,110 @@
1
+function html_info(){
2
+	var get_room_name = window.get_room_name || glob_u.fns.get_room_name
3
+
4
+	window?.rldi?.setint?.(400)
5
+	var domain_prefix = location.hostname.split(".").slice(0,-2).join(".")
6
+	var root_div= document.querySelector("#root_div")
7
+	root_div.innerHTML=""
8
+	var n =document.createElement("SPAN",{})
9
+	n.innerHTML = `<div>${domain_prefix}</div><div>room name: ${get_room_name()}</div>
10
+<div><span>jsyncdb:</span><span id="jsyncdb_state">uninitialized</span></div>
11
+	`
12
+	root_div.append(n)
13
+}
14
+
15
+
16
+function ds_test2(){
17
+	// clog("ds_test2!")
18
+	// window.ds_test ?ds_test():glob_u.fns.ds_test()
19
+	jsyncdb_init_helper()
20
+	// glob_u.fns.ds_test
21
+	// ds_test()
22
+}
23
+
24
+
25
+// 
26
+
27
+
28
+function jsyncdb_init_helper(){
29
+	// clog("WS_HELPER")
30
+	var fns = window.glob_u.ws.fns
31
+	var room_name=glob_u.fns.get_room_name()
32
+	var o = {
33
+
34
+		include_participants_data:1, 
35
+		include_ws_channel_data:1, // required for participants_data to work
36
+		// msto.participants and msto.ws_channels will be defined in either case so we don't need to handle cases where some users enable this and some don't
37
+		AutoReconnect:false,
38
+
39
+
40
+		// the following options attributes 
41
+
42
+
43
+		url:'wss://' + window.location.hostname  +`/djc_srv/ws/chat/${room_name}`,
44
+		socket_name:"ws1",
45
+		ord:glob_u.cb.ws,
46
+
47
+
48
+		methods:{
49
+		onmessage:fns.onmessage,
50
+		onclose:fns.onclose,
51
+		onerror:fns.onerror,
52
+		onopen:fns.onopen,
53
+		},
54
+
55
+
56
+		fns:{
57
+
58
+
59
+		},
60
+	}
61
+
62
+	var socket = window.glob_u.fns.connect_ws(o)
63
+	// clog({socket})
64
+}
65
+
66
+
67
+
68
+
69
+
70
+// if 
71
+
72
+window.dev_flag = 1
73
+addEventListener("load",html_info)
74
+
75
+addEventListener("load",ds_test2)
76
+
77
+
78
+function update_ui(o,scope,info){
79
+	var clog =console.log
80
+	clog("update_ui",{o,scope,info})
81
+	// hard coding stuff that will probably change here
82
+	switch(info.hkey) {
83
+		case "WS_OPEN:":
84
+		$("#jsyncdb_state").text("connecting...")
85
+		break;
86
+		case "WS_CLOSE:":
87
+		$("#jsyncdb_state").text("disconnected")
88
+		break;
89
+		case "WS_MSTO_INITED":
90
+		$("#jsyncdb_state").text("connected")
91
+		break;
92
+		default:
93
+	}
94
+ 
95
+
96
+}
97
+
98
+// function get_room_name() {
99
+// 	// return "room/name"
100
+// 	return "room_name"
101
+// }
102
+
103
+glob_u.cb.ws.reg_cb(update_ui,"WS_OPEN:","update_ui")
104
+glob_u.cb.ws.reg_cb(update_ui,"WS_CLOSE:","update_ui")
105
+glob_u.cb.ws.reg_cb(update_ui,"WS_MSTO_INITED","update_ui")
106
+
107
+// addEventListener("load",db_display)
108
+
109
+// msto.example = {key:"val",z:"undefined"}
110
+// clog("??")

+ 43
- 2
js_client/jsync_ws.js View File

@@ -38,7 +38,17 @@ window.glob_u.ws.fns.onclose = function onclose(event){
38 38
 	clog("WS_CLOSE",{that:this,readyState:this.readyState,args:[...arguments]})
39 39
 	// glob_u.ws.sockets.ws1.params.ord.run_cbs("WS_CLOSE:",{event,that:this})
40 40
 	glob_u.ws.sockets[this.params.socket_name].params.ord.run_cbs("WS_CLOSE:",{event,that:this})
41
-	setTimeout(this.params.fns.reconnect,1000)
41
+	// setTimeout(this.params.fns.reconnect,1000)
42
+	let  timeout0 = this.params.timeout0 || 100
43
+	let timeout_multi = this.params.timeout_multi || 3000
44
+	let t =timeout_multi
45
+	// let now = Date.now()
46
+	if (this.params.HAS_OPENED && timeout_multi<Date.now()-this.params.OPEN_TIME){
47
+		t=timeout0
48
+	}
49
+	// clog(":TIME:",now,this.params.OPEN_TIME,now-this.params.OPEN_TIME)
50
+	this.params.HAS_OPENED = 0
51
+	setTimeout(this.params.fns.reconnect,t)
42 52
 }
43 53
 
44 54
 window.glob_u.ws.fns.onmessage = function onmessage(event){
@@ -55,7 +65,9 @@ window.glob_u.ws.fns.onerror = function onerror(event){
55 65
 
56 66
 }
57 67
 window.glob_u.ws.fns.onopen = function onopen(event){
58
-
68
+	this.params.HAS_OPENED = 1
69
+	this.params.OPEN_TIME = Date.now()
70
+	
59 71
 	// clog("WS_OPEN???",{that:this,args:[...arguments]},{on_open_once:this.on_open_once,on_open_cbs:this.params.on_open_cbs})
60 72
 	// glob_u.ws.sockets.ws1.params.ord.run_cbs("WS_OPEN:",{event,that:this})
61 73
 	glob_u.ws.sockets[this.params.socket_name].params.ord.run_cbs("WS_OPEN:",{event,that:this})
@@ -224,6 +236,35 @@ function ws_reload(){
224 236
 
225 237
 
226 238
 function get_room_name(){
239
+	// return 
240
+	var s=location.search
241
+	// if s[0]=="?"){}
242
+	s[0]=="?" ?  s = s.slice(1):0
243
+	var param
244
+	for (param of s.split("&")){
245
+
246
+		let kv = param.split("=")
247
+		if (kv[0]=="room"){
248
+			return kv[1]
249
+		}
250
+		clog("::",param,kv)
251
+		// clog("::",param,kv,"")
252
+	}
253
+
254
+	// var 
255
+	return "room_name"
256
+	var room_name=location.pathname.match(/\/loc.([^\/]*)\//)
257
+	if (room_name){
258
+		room_name = room_name[1]
259
+	} else {
260
+	room_name = location.pathname.split("/").pop()
261
+
262
+	}
263
+	return room_name
264
+
265
+}
266
+// function get_room_name(){
267
+function get_room_name_old(){
227 268
 
228 269
 	var room_name=location.pathname.match(/\/loc.([^\/]*)\//)
229 270
 	if (room_name){

Loading…
Cancel
Save