【问题标题】:python Flask socketio 404/400 from browser来自浏览器的python Flask socketio 404/400
【发布时间】:2017-11-02 20:41:21
【问题描述】:

我正在尝试运行一个烧瓶套接字服务器,该服务器连接到浏览器中的反应应用程序。

python 服务器代码(相关部分):

from flask import Flask, request, jsonify
from flask_socketio import SocketIO

app = Flask(__name__)
socketio = SocketIO(app)

@socketio.on('message')
def handle_message(message):
    print('received message: ' + message)

if __name__ == '__main__':
    socketio.run(app)

客户端js(在浏览器中运行):

var ws = new WebSocket("ws://127.0.0.1:5000");
console.log('connecting to log ws')
ws.onopen = function (event) {
  console.log('connection opened')
};
ws.onmessage = function (event) {
  console.log(event.data);
  self.recieve(event.data);
}

我在浏览器中收到以下错误:

failed: Error during WebSocket handshake: Unexpected response code: 404

现在我听说这通常是因为我使用的网址有误。但是,当我改变

var ws = new WebSocket("ws://127.0.0.1:5000");

var ws = new WebSocket("wss://127.0.0.1:5000");

可以看到服务端获取了连接请求,但是服务端返回如下错误:

127.0.0.1 - - [02/Nov/2017 13:07:59] code 400, message Bad HTTP/0.9 request 
type ('\x16\x03\x01\x00t\x01\x00\x00p\x03\x01Y\xfb{\x1f\x0
5\x8d\xbf|\xdb\xeb\x12\xe8\xf6\xb0\xf9')

我需要做什么才能在此处成功建立连接?这里使用的浏览器是chrome,但我与其他浏览器也有困难。

【问题讨论】:

    标签: javascript python flask websocket socket.io


    【解决方案1】:

    我想出了答案。您不能在浏览器中使用 WebSocket 与 flask-socketio 进行通信,相反我还需要在客户端使用常规 socket.io 与服务器进行通信。自从切换后,我在客户端和服务器之间获得了完美的通信。

    【讨论】:

    • 可以使用浏览器完成,但如果您使用的是基于 Web 的客户端,则需要确保它使用 SocketIO,而不是其他一些实现。我发现适用的一个是amritb.github.io/socketio-client-tool
    猜你喜欢
    • 1970-01-01
    • 2019-07-24
    • 1970-01-01
    • 2016-10-11
    • 1970-01-01
    • 2016-05-08
    • 2011-06-13
    • 2022-12-08
    • 1970-01-01
    相关资源
    最近更新 更多