服务器发送的事件数据未在浏览器中显示

时间:2015-02-09 07:37:17

标签: python twisted server-sent-events

我是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()

当我尝试从其他计算机访问数据时,有人可以帮助我为什么数据没有显示(或者我如何调试它)。非常感谢任何帮助。

0 个答案:

没有答案