0

我有一个 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 以打开一个与 websockets 通信的新端口,如下所示: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");因为如果我评论这一行,那么连接仍然存在。

4

1 回答 1

-1

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

websockify --verbose 5001 localhost:5000

于 2021-02-16T22:14:59.427 回答