Skip to main content

一个简单的 WebSocket 服务器

项目描述

一个简单的 WebSocket 服务器

GitHub 操作 派皮 PyPI - Python 版本 PyPI - 许可证

基于simple-websocket-server

  • RFC 6455(所有最新浏览器)
  • 开箱即用的 TLS/SSL
  • 通过 Autobahns Websocket 测试套件
  • 支持 Python 2 和 3

安装

pip install simple-websocket-server

回声服务器示例

from simple_websocket_server import WebSocketServer, WebSocket


class SimpleEcho(WebSocket):
    def handle(self):
        # echo message back to client
        self.send_message(self.data)

    def connected(self):
        print(self.address, 'connected')

    def handle_close(self):
        print(self.address, 'closed')


server = WebSocketServer('', 8000, SimpleEcho)
server.serve_forever()

打开tests/websocket.html并连接到服务器。

聊天服务器示例

from simple_websocket_server import WebSocketServer, WebSocket


class SimpleChat(WebSocket):
    def handle(self):
        for client in clients:
            if client != self:
                client.send_message(self.address[0] + u' - ' + self.data)

    def connected(self):
        print(self.address, 'connected')
        for client in clients:
            client.send_message(self.address[0] + u' - connected')
        clients.append(self)

    def handle_close(self):
        clients.remove(self)
        print(self.address, 'closed')
        for client in clients:
            client.send_message(self.address[0] + u' - disconnected')


clients = []

server = WebSocketServer('', 8000, SimpleChat)
server.serve_forever()

打开多个tests/websocket.html并连接到服务器。

想要更快地启动和运行?

有一个例子提供了一个简单的回声和聊天服务器

回声服务器

python tests/example_server.py --example echo

聊天服务器(打开多个测试/websocket.html文件)

python tests/example_server.py --example chat

TLS/SSL 示例

  1. 生成带密钥的证书

     openssl req -new -x509 -days 365 -nodes -out cert.pem -keyout key.pem
    
  2. 运行安全的 TSL/SSL 服务器(在这种情况下,cert.pem 文件位于同一目录中)

     python tests/example_server.py --example chat --ssl 1
    
  3. 通过 https提供tests/websocket.html将证书提供给浏览器。HTTPS 服务器将在本地目录中查找 cert.pem。确保tests/websocket.html也在与运行服务器的目录相同的目录中。

     python tests/simple_https_server.py
    
  4. 打开网络浏览器:https://localhost:443/tests/websocket.html

  5. 将ws://localhost:8000/更改为wss://localhost:8000并单击连接。

注意:如果您在连接时遇到问题,请确保针对异常https://localhost:8000或您要连接的任何主机:端口对在浏览器中添加证书。

对于程序员

connected:握手完成时调用

  • self.address:端点的 TCP 地址端口元组

handle_close:端点关闭或出现错误时调用

  • self.address:端点的 TCP 地址端口元组

句柄:当有来自客户端端点的传入消息时被调用

  • self.address:端点的 TCP 地址端口元组
  • self.opcode:WebSocket 帧类型(STREAM、TEXT、BINARY)
  • self.data: bytearray (BINARY frame) 或 unicode string payload (TEXT frame)
  • self.request:来自 WebSocket 握手的 HTTP 详细信息(请参阅 BaseHTTPRequestHandler)

send_message:向客户端端点发送一些文本或二进制数据

  • 将数据作为 unicode 对象发送将发送一个 TEXT 帧
  • 将数据作为 bytearray 对象发送将发送 BINARY 帧

close:向端点发送关闭帧

许可

麻省理工学院

下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

simple-websocket-server-0.4.2.tar.gz (9.8 kB 查看哈希)

已上传 source

内置分布

simple_websocket_server-0.4.2-py3-none-any.whl (8.8 kB 查看哈希

已上传 py3