使用socket.io

时间:2018-02-17 00:50:56

标签: javascript flask websocket socket.io flask-socketio

TL; DR:我正在使用后端的PRAW,Flask,Flask-SocketIO和前端的SocketIO JS库来处理应用程序,以便在发生时直播reddit评论。我有一个websocket配置为向后端发送授权代码,然后后端在拥有代码后将数据发送到前端。问题是前端Javascript在终端中Ctrl-C之前显然没有收到任何数据。

这是相关代码

前端:

// Open up the websocket
var codeSocket = io.connect('http://' + document.domain + ':' + location.port + '/code');
var commentsSocket = io.connect('http://' + document.domain + ':' + location.port + '/comments');

// Send the authorization code to Flask when you connect to the socket
codeSocket.on('connect', function() {
     codeSocket.emit('authorization_code', {code: getUrlParameter('code')});
 });

// Do something with the data stream
commentsSocket.on('comment', function(data){
    console.log(JSON.parse(data).id);
});

后端:

@socketio.on('authorization_code', namespace='/code')
def generate_comments(json):

    code = json['code']
    reddit = generate_reddit_instance()['instance']
    reddit.auth.authorize(code)

    def generate():
        for comment in reddit.subreddit('all').stream.comments():
            emit('comment', dumps({'id': str(comment)}), namespace='/comments')
    return generate()

Ctrl-C终端之后,所有注释ID都出现在控制台中,如下所示:

Comment IDs

此项目的完整源代码可在GitHub上获得,here。我还没有找到有同样问题的人,但也许今天我的Google-fu很弱。

0 个答案:

没有答案