У меня есть HTTP-сервер API (возвращающий json данных) и клиент, который делает запросы через веб-сокеты, поэтому я решил go вместо websockify для связи между моим сервером и моим клиентом.
Но я не понимаю, как получить результат запроса веб-сокета.
Для тестирования у меня есть простой сервер 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, чтобы открыть новый порт, который взаимодействует с веб-сокетами, например: websockify --verbose 0.0.0.0:5001 0.0.0.0:5000
.
И У меня есть клиент javascript, который пытается сделать такой запрос веб-сокета:
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.
Кажется, что он закрывается, когда я пытаюсь отправить веб-сокет (socket.send("GET / HTTP/1.1");
), потому что, если я прокомментирую эту строку, соединение сохраняется.