Updated script that can be controled by Nodejs web app

This commit is contained in:
mac OS
2024-11-25 12:24:18 +07:00
parent c440eda1f4
commit 8b0ab2bd3a
8662 changed files with 1803808 additions and 34 deletions

View File

@ -0,0 +1,34 @@
import simple_websocket
class SimpleWebSocketWSGI: # pragma: no cover
"""
This wrapper class provides a threading WebSocket interface that is
compatible with eventlet's implementation.
"""
def __init__(self, handler, server, **kwargs):
self.app = handler
self.server_args = kwargs
def __call__(self, environ, start_response):
self.ws = simple_websocket.Server(environ, **self.server_args)
ret = self.app(self)
if self.ws.mode == 'gunicorn':
raise StopIteration()
return ret
def close(self):
if self.ws.connected:
self.ws.close()
def send(self, message):
try:
return self.ws.send(message)
except simple_websocket.ConnectionClosed:
raise IOError()
def wait(self):
try:
return self.ws.receive()
except simple_websocket.ConnectionClosed:
return None