我一直在使用gevent-websocket一段时间,但由于某种原因,它在OSX和Linux上都神秘地破坏了。 bitbucket和pypi的人在没有响应的情况下驳回了我的请求,就像stackoverflow上的人一样。我正计划编写自己的WebSocket实现,但我需要访问管理原始数据发送和接收的原始连接对象(如socket模块中的套接字对象)。我在哪里可以找到瓶装?我正在寻找可能如下所示的代码:
@route("/websocket")
def ws():
raw_conn = ??? # socket object from socket module
# initialize websocket here, following protocols and then send messages
while True:
raw_conn.send(raw_conn.recv()) # Simple echo
答案 0 :(得分:0)
我为此做了一些有用的代码:
import abc
import socket
class Communication(metaclass=abc.ABCMeta):
def __init__(self, port):
self.port = port
self.connexion = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
def send_message(self, message):
self.my_connexion.send(message.encode())
def wait_for_message(self, nb_characters = 1024):
message = self.my_connexion.recv(nb_characters)
return message.decode()
def close_connexion(self):
self.connexion.close()
class Client(Communication):
def __init__(self, port):
Communication.__init__(self, port)
self.connexion.connect(("localhost", port))
self.my_connexion = self.connexion
class Server(Communication):
def __init__(self, port, failed_connexion_attempt_max = 1):
Communication.__init__(self, port)
self.connexion.bind(("", port))
self.connexion.listen(failed_connexion_attempt_max)
self.my_connexion, address = self.connexion.accept()
def close_connexion(self):
self.client_connexion.close()
self.connexion.close()