我是Python和网络的新手。我在服务器端尝试一些Python代码在我的客户端浏览器上显示一些连续的数据。我从网络本身获取了这个示例代码。问题是当我尝试使用localhost访问我的浏览器时,此代码在本地计算机上正常工作,但当我尝试从其他计算机访问它时不起作用。在Ubuntu中,我没有在我的浏览器上获得任何数据,但在Windows中,当我停止服务器代码时,我会在浏览器上获取所有数据。我在Python中使用Twisted和Flask。这是我正在尝试的代码:
import random
from twisted.web.server import Site
from twisted.web.wsgi import WSGIResource
from twisted.internet import reactor
import time
from flask import Flask, request, Response
app = Flask(__name__)
def event_stream():
count = 0
while True:
count += 1
yield 'data: %d\n\n' % count
time.sleep(5)
print 'data sent...'
@app.route('/my_event_source')
def sse_request():
return Response(
event_stream(),
mimetype='text/event-stream')
@app.route('/')
def page():
return '''
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="//code.jquery.com/jquery-1.8.0.min.js"></script>
<script type="text/javascript" src="EventSource.js"></script>
<script type="text/javascript">
$(document).ready(
function() {
sse = new EventSource('/my_event_source');
sse.onmessage = function(message) {
console.log('A message has arrived!');
$('#output').append('<li>'+message.data+'</li>');
}
})
</script>
</head>
<body>
<h2>Hello World Example to implement Server Sent Event using Twisted in Python...</h2>
<ul id="output"></ul>
</body>
</html>
'''
if __name__ == '__main__':
print 'starting server...'
resource = WSGIResource(reactor, reactor.getThreadPool(), app)
site = Site(resource)
reactor.listenTCP(9999, site)
reactor.run()
当我尝试从其他计算机访问数据时,有人可以帮助我为什么数据没有显示(或者我如何调试它)。非常感谢任何帮助。