我正在尝试为随机字符串的自动生成器创建一个烧瓶应用程序。我想用socket.js实现。所以一切都很顺利,除了与socket的连接。它适用于PC,但不适用于覆盆子Pi。
这是文件结构
|-- app.py
|-- static
| `-- js
| |-- ajax.js
| |-- hello_world.js
| `-- Socket.js
`-- templates
`-- hello_world.html
这是我的代码示例。
app.py
from flask import Flask,render_template
from flask.ext.socketio import SocketIO, emit
import random
import string
app = Flask(__name__)
socketio = SocketIO(app)
class AppObject():
def __init__(self):
self.app = Flask(__name__)
self.socketio = SocketIO(self.app)
@app.route('/')
def Hello():
global appObject
sampleText = appObject.stringGen()
return render_template('hello_world.html', name=sampleText)
def stringGen(self):
chars = "".join( [random.choice(string.letters) for i in xrange(15)] )
return chars
if __name__ == '__main__':
appObject = AppObject()
appObject.socketio.run(app,host="0.0.0.0", debug=True)
hello_world.js
$(document).ready(function() {
namespace = '/test';
var socket = io.connect('http://' + document.domain + ':' + location.port + namespace);
var b1 = document.getElementById('text-id');
});
hello_world.html
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="static/js/ajax.js"></script>
<script src="static/js/hello_world.js"></script>
<script type="text/javascript" src="static/js/Socket.js"></script>
<script type="text/javascript" language="javascript"></script>
</head>
{% if name %}
<h1 id="text-id"> {{ name }}!</h1>
{% else %}
<h1>Hello World!</h1>
{% endif %}
</html>
当我实现所有这些时,我在socket.js中收到错误TypeError: a.transport is null
。它指向用于在JavaScript(var socket = io.connect('http://' + document.domain + ':' + location.port + namespace);
)中连接套接字的行。我通过ssh检查了另一台电脑。但它工作正常,我不知道为什么。请帮忙解决这个问题。
谢谢。