我正在构建一个使用websockets的flask应用程序。为此,我想使用flask-socketio库。我已经按照文档说明复制了客户端示例:
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/socket.io/0.9.16/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('hello', {data: 'Hello there!'});
});
</script>
和一个简单的服务器端处理程序:
@socketio.on('hello')
def handle_hello(message):
print message
然而,我在borwserwindow控制台得到以下错误:
Uncaught TypeError: Cannot read the property 'onClose' of null.
有谁知道我做错了什么吗? 那是因为你正在为socket获取错误的javascript文件。IO在您的客户端应用程序。把
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/socket.io/0.9.16/socket.io.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.4.6/socket.io.js">
我也遇到过同样的问题。原因与python模块不兼容。您可以尝试安装这些版本。
gevent - 1.1 b1
greenlet-0.4.9
Flask-SocketIO-0.6.0
我也有同样的问题,当我将版本从0.9.16更改为1.3.6时,它为我工作。
<script src="//cdnjs.cloudflare.com/ajax/libs/socket.io/1.3.6/socket.io.min.js"></script>