You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

app_sio.py 5.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. from flask import Flask, render_template
  2. from flask_socketio import SocketIO
  3. import flask_socketio
  4. import flask
  5. import os
  6. app = Flask(__name__,template_folder = r"../js_client")
  7. app.config['SECRET_KEY'] = 'secret!'
  8. socketio = SocketIO(app)
  9. p=print
  10. @app.route('/')
  11. def index():
  12. print("INDEX")
  13. return render_template('index.html')
  14. @app.route('/f1/<path:path>')
  15. def r2(path):
  16. p("????,...",path)
  17. return flask.send_file(r"../js_client/"+ path)
  18. return flask.send_file(r"../js_client", path)
  19. return flask.send_file('../js_client/jquery-3.5.1.min.js')
  20. # return flask.send_from_directory('templates', path)
  21. return flask.send_from_directory('./', path)
  22. @app.route('/<path:path>')
  23. def r1(path):
  24. p("????,aaaa,...",path)
  25. if ("shared_libs/jquery-3.5.1.min.js" in path):
  26. return flask.send_from_directory(r"../js_client", "jquery-3.5.1.min.js")
  27. return flask.send_from_directory(r"../js_client", path)
  28. return flask.send_file('../js_client/jquery-3.5.1.min.js')
  29. # return flask.send_from_directory('templates', path)
  30. return flask.send_from_directory('./', path)
  31. # @socketio.on('connect',namespace="/rx2/")
  32. r'''
  33. @socketio.on('connect',namespace="/rx2")
  34. def handle_message_a(*a,**kw):
  35. print('received connect: ',a,kw)
  36. @socketio.on('connect',namespace="rx2")
  37. def handle_message_b(*a,**kw):
  38. print('received connect: ',a,kw)
  39. @socketio.on('connect',namespace="rx2/")
  40. def handle_message_c(*a,**kw):
  41. print('received connect: ',a,kw)
  42. @socketio.on('connect',namespace="/rx2/")
  43. def handle_message_d(*a,**kw):
  44. print('received connect: ',a,kw)
  45. @socketio.on('connect',"/rx2")
  46. def handle_message__a(*a,**kw):
  47. print('received connect: ',a,kw)
  48. @socketio.on('connect',"rx2")
  49. def handle_message__b(*a,**kw):
  50. print('received connect: ',a,kw)
  51. @socketio.on('connect',"rx2/")
  52. def handle_message__c(*a,**kw):
  53. print('received connect: ',a,kw)
  54. @socketio.on('connect',"/rx2/")
  55. def handle_message__d(*a,**kw):
  56. print('received connect: ',a,kw)
  57. '''
  58. # @socketio.onAny('connect',namespace="/rx2")
  59. # def fn1(*a,**kw):
  60. # p("\n\t\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
  61. # @socketio.on('connect<path>',"/<path:path>")
  62. # @socketio.on('connect',"/<path:path>")
  63. @socketio.on('connect',"/")
  64. def handle_message(*a,**kw):
  65. print('received connect:?? ',a,kw)
  66. # p(flask.request.sid)
  67. #
  68. # for en in dir(flask.request):
  69. # p(en)
  70. # p(":")
  71. # p(flask.request.args)
  72. # p(flask.request.url)
  73. room = flask.request.args.get("room","no_room")
  74. p("+",room)
  75. join_room(room)
  76. # p(flask.request.event)
  77. # p(socketio.server.get_environ())
  78. @socketio.on('disconnect')
  79. def test_disconnect():
  80. print('Client disconnected')
  81. room = flask.request.args.get("room","no_room")
  82. p("}}}}}}}}}}",room)
  83. @socketio.on('message')
  84. def handle_message(data):
  85. print('received message: ' + data)
  86. @socketio.on('jsync.io2')
  87. def handle_message(data):
  88. print('received jsync.io message: ' + data)
  89. room = flask.request.args.get("room","no_room")
  90. p("io2+",room)
  91. # flask_socketio.emit('jsync.io', data, broadcast=True)
  92. flask_socketio.emit('jsync.io2', data ,room=room, broadcast=True)
  93. @socketio.on('jsync.io')
  94. def handle_message(data):
  95. print('received jsync.io message: ' + data)
  96. room = flask.request.args.get("room","no_room")
  97. p("io+",room)
  98. # flask_socketio.send(data, to=room)
  99. flask_socketio.emit('jsync.io2', data+"?", broadcast=True)
  100. # flask_socketio.emit('jsync.io', data, broadcast=True)
  101. # flask_socketio.emit('jsync.io2', data+"?", broadcast=True)
  102. @socketio.on('jsync.io.all')
  103. def handle_message(data):
  104. print('received jsync.io message: ' + data)
  105. flask_socketio.emit('jsync.io', data, broadcast=True)
  106. flask_socketio.emit('jsync.io2', data, broadcast=True)
  107. from flask_socketio import join_room, leave_room
  108. @socketio.on('join')
  109. def on_join(data):
  110. username = data['username']
  111. room = data['room']
  112. join_room(room)
  113. flask_socketio.send(username + ' has entered the room.', to=room)
  114. @socketio.on('leave')
  115. def on_leave(data):
  116. username = data['username']
  117. room = data['room']
  118. leave_room(room)
  119. flask_socketio.send(username + ' has left the room.', to=room)
  120. @socketio.on('json')
  121. def handle_json(json):
  122. print('received json: ' + str(json))
  123. # generated by bing seems to work
  124. @app.route("/ldir")
  125. def list_directory():
  126. orig_path = os.getcwd()
  127. # Get the list of files and directories
  128. # items = os.listdir(DIRECTORY_PATH)
  129. os.chdir(app.root_path)
  130. items = os.listdir("../js_client")
  131. os.chdir(orig_path)
  132. # Filter out hidden files and directories
  133. items = [item for item in items if not item.startswith(".")]
  134. # Create an HTML string with the list of items as links
  135. html_content = "<h1>Contents of the Directory</h1><ul>"
  136. html_links = ""
  137. html_src_links = ""
  138. other_links = ""
  139. for item in items:
  140. p([item])
  141. if "html" in item:
  142. html_src_links += f"<li><a href='viewsrc2/{item}'>src:{item}</a></li>"
  143. html_links += f"<li><a href='{item}'>{item}</a></li>"
  144. else:
  145. other_links += f"<li><a href='{item}'>{item}</a></li>"
  146. # link = (request.path + '/' if request.path != '/' else '') + item
  147. html_content+=html_links
  148. html_content+="<br>"
  149. html_content+=other_links
  150. html_content+="<br>"
  151. html_content+="VIEW SRC: its actually < pre >"
  152. html_content+="<br>"
  153. html_content+="<br>"
  154. html_content+=html_src_links
  155. html_content += "</ul>"
  156. # Return the HTML content directly
  157. return html_content
  158. # end generated by bing
  159. for en in dir(socketio):
  160. p("~~",en)
  161. if __name__ == '__main__':
  162. socketio.run(app,debug=True,host='0.0.0.0')