【问题标题】:How to : Websocket request to HTTP api server with websockify如何:使用 websockify 向 HTTP api 服务器发出 Websocket 请求
【发布时间】:2020-10-08 10:47:53
【问题描述】:

我有一个 http API 服务器(返回 json 数据)和一个发出 websockets 请求的客户端,所以我决定通过websockify 在我的服务器和我的客户端之间进行通信。

但我不知道如何获取 websocket 请求的结果。

出于测试目的,我有一个简单的带有 Flask 的 hello world python API 服务器:

import flask
from flask import request, jsonify
app = flask.Flask(__name__)
app.config["DEBUG"] = True
result = {"HelloWorld" : 42}
@app.route('/', methods=['GET'])
def home():
    return jsonify(result)
app.run(host="0.0.0.0")

在浏览器中测试,返回良好{"HelloWorld": 42}

我运行 websockify 以打开一个与 websocket 通信的新端口,如下所示:websockify --verbose 0.0.0.0:5001 0.0.0.0:5000

我有一个 javascript 客户端试图发出这样的 websocket 请求:

var socket = null;
socket = new WebSocket("ws://0.0.0.0:5001/");
socket.onerror = function(error) {
    console.error(error);
};
socket.onopen = function(event) {
    console.log("Connexion ok.");
    socket.send("GET / HTTP/1.1");
};
socket.onmessage = function(event) {
    console.log("Message: ", event.data);
};
socket.onclose = function(event) {
    console.log("Connexion ko.");
};

但是当我尝试执行这个脚本时,连接在连接后立即关闭:

Connexion ok.
Connexion ko.

当我尝试发送 websocket (socket.send("GET / HTTP/1.1");) 时,它似乎关闭了,因为如果我评论这一行,那么连接仍然存在。

【问题讨论】:

    标签: javascript websocket websockify


    【解决方案1】:

    我认为你需要这样的东西:

    websockify --verbose 5001 localhost:5000

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多