温馨提示×

如何在Ubuntu上用Postman测试WebSocket

小樊
43
2025-11-10 15:12:08
栏目: 智能运维

如何在Ubuntu上用Postman测试WebSocket

1. 准备工作

  • 安装Postman:从Postman官网下载最新版本(支持WebSocket功能),安装完成后打开。
  • 准备WebSocket服务端:需有一个运行中的WebSocket服务(如用FastAPI、Node.js等编写的本地或远程服务)。若没有现成服务,可参考以下步骤快速创建一个FastAPI WebSocket服务(Ubuntu环境):
    # 创建并激活虚拟环境(可选但推荐)
    python3 -m venv venv
    source venv/bin/activate
    
    # 安装依赖
    pip install fastapi uvicorn
    
    # 创建WebSocket服务文件(main.py)
    cat > main.py << 'EOF'
    from fastapi import FastAPI, WebSocket, WebSocketDisconnect
    from fastapi.responses import HTMLResponse
    
    app = FastAPI()
    
    @app.get("/")
    async def get():
        return HTMLResponse("""
        <!DOCTYPE html>
        <html>
            <body>
                <h1>WebSocket测试页面</h1>
                <form onsubmit="sendMessage(event)">
                    <input type="text" id="messageText" autocomplete="off"/>
                    <button>发送</button>
                </form>
                <ul id='messages'></ul>
                <script>
                    var ws = new WebSocket("ws://localhost:8000/ws");
                    ws.onmessage = function(event) {
                        var messages = document.getElementById('messages');
                        var message = document.createElement('li');
                        message.textContent = event.data;
                        messages.appendChild(message);
                    };
                    function sendMessage(event) {
                        var input = document.getElementById("messageText");
                        ws.send(input.value);
                        input.value = '';
                        event.preventDefault();
                    }
                </script>
            </body>
        </html>
        """)
    
    @app.websocket("/ws")
    async def websocket_endpoint(websocket: WebSocket):
        await websocket.accept()
        try:
            while True:
                data = await websocket.receive_text()
                await websocket.send_text(f"服务器收到: {data}")
        except WebSocketDisconnect:
            print("客户端断开连接")
    EOF
    
    # 运行服务
    uvicorn main:app --reload
    
    服务启动后,WebSocket接口将监听ws://localhost:8000/ws

2. 用Postman测试WebSocket

步骤1:创建WebSocket请求
  • 打开Postman,点击左上角New按钮,选择WebSocket Request,进入WebSocket请求页面。
步骤2:输入WebSocket URL
  • 在地址栏中输入服务端WebSocket地址(如本地服务填ws://localhost:8000/ws),点击右侧Connect按钮。
  • 连接成功判断:地址栏右侧状态会变为“Connected”,表示连接建立。
步骤3:发送与接收消息
  • 发送消息:在“Message”输入框中输入要发送的内容(如Hello, WebSocket),点击Send按钮。
  • 接收消息:发送后,“Messages”面板会显示服务端的响应(如服务器收到: Hello, WebSocket),支持格式化显示(如JSON)和按时间倒序排列。
步骤4:断开连接
  • 调试完成后,点击地址栏右侧Disconnect按钮,断开与WebSocket服务端的连接。

3. 注意事项

  • 版本要求:确保Postman为最新版本(旧版本可能不支持WebSocket功能)。
  • 地址格式:WebSocket URL以ws://(非加密)或wss://(加密)开头,端口需与服务端一致。
  • 认证处理:若服务端需要认证(如JWT Token),可通过两种方式传递:
    • URL查询参数:在URL后添加?token=your_token(如ws://localhost:8000/ws?token=abc123);
    • 连接后发送认证消息:连接成功后,先发送{"type": "auth", "token": "your_token"}格式的消息进行认证。
  • 防火墙设置:若服务端在远程服务器上,需确保服务器防火墙开放对应端口(如8000),允许外部连接。

0