我有一个 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");
因为如果我评论这一行,那么连接仍然存在。