繁体   English   中英

如何:Websocket 请求 HTTP api 服务器与 websockify

[英]How to : Websocket request to HTTP api server with websockify

I have an http API server (returning json data) and a client who make websockets requests, so I decided to go over websockify to communicate between my server and my client.

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

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

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"); ) 时,它似乎关闭了,因为如果我评论这一行,那么连接仍然存在。

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

websockify --verbose 5001 localhost:5000

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM