首页 > 解决方案 > 为什么 Flask-SocketIO 有 `http` 协议而不是 `ws`?

问题描述

我试图使用这个 Flask 扩展来实现一个 WebSocket 服务器: https ://flask-socketio.readthedocs.io/en/latest/

我看到客户端正在使用这样的socketio:

<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/socket.io/1.3.6/socket.io.min.js"></script>
<script type="text/javascript" charset="utf-8">
    var socket = io.connect('http://' + document.domain + ':' + location.port);
    socket.on('connect', function() {
        socket.emit('my event', {data: 'I\'m connected!'});
    });
</script>

为什么它http://应该是 WebSocket 服务器时使用(使用ws://)?

标签: pythonflaskwebsocketflask-socketio

解决方案


Socket.IO 唯一感兴趣的协议部分是该s部分,即http(s), ws(s)连接是否应该被加密。除了协议被忽略并且 Socket.IO 尝试多种不同的协议(websockets、http 上的长轮询等)以建立连接。取决于服务器支持什么。


推荐阅读