首页 > socketio请求头问题

socketio请求头问题

我要在flask上实现websocket通信, 前端使用的是socket.io,后端使用的是flask_socketio. 当我用socket.io向服务器发送请求的时候发现请求头里没有websocket内容知乎上关于websocket的回答.

我发现socket.io的请求头是这样的

我看了一下我后台接受到的请求头也是这样的

我后台接受请求后怎么判断这个请求时http请求还是websocket。

服务器端代码

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

app = Flask(__name__)
app.config['SECRET_KEY'] = 'so hard'
socketio = SocketIO(app)

stores = set()


@app.route('/')
def hello_world():
    print(request.headers)
    return render_template('index.html')


@socketio.on('connect')
def connect():
    stores.add(request)
    print(request.headers)
    print('clinet', len(stores))


@socketio.on('message')
def handle_message(message):
    print('recive message:', message)


if __name__ == '__main__':
    app.debug = False
    socketio.run(app, host='0.0.0.0',port=8080)

socket.io (其实大多 websocket 的库都有) 会尝试兼容各种浏览器,例如不支持 websocket 的自动切换成 ajax 轮询或者长链接等待。为了实现这个,通常第一个请求并不是建立 websocket,而是 client 和 server 沟通确认我们这次用什么姿势 >.< ,然后后续再根据结果来建立 websocket 链接或者是别的姿势 ( 逃 ...


前几天刚学完websocket的,我不太懂Python,我是用PHP的,但实现原理应该是一样的。
我说下我的实现流程吧:
首先你要让Websocket服务端启动起来啊,就差不多是让启动一个WebSocket服务器,windows是用cmd运行服务端.php文件,让服务器一直处于挂起状态。
服务端.php(大概长这样):

cmd运行界面(需要一直挂起):

然后前端是用JS实例化HTML5提供的WebSocket API,连接上 Websocket”服务器“
大概长这样:

heder请求与响应头是这样:

由于你描述的不清楚所以我不知道你的问题出在哪里,你可以考虑把代码贴上来。

(我猜测你是Websocket”服务器“没启动)

【热门文章】
【热门文章】