socket.io不适用于EC2

时间:2016-04-07 07:55:03

标签: python amazon-ec2 gevent-socketio

我正在执行一项新功能,允许在管理页面上显示系统日志。我正在使用gevent-socketio(0.3.6)。 我的本地计算机上的一切正常,但是当我将代码部署到EC2时,它无效。

这是客户端代码:

// notification socketio
var socket_notification = io.connect('/notification');

// Update when we get new data from the server
socket_notification.on('data', function (data) {
    $scope.notifications.push(data);
    $scope.total_noti.push(data);

});

这就是我在firefox控制台中看到的:

GET http://mybackend.com/socket.io/1/?t=1460013461586 200 OK 466ms

似乎socket连接成功但我无法从服务器获得任何东西。

这是我的后端代码:

@route(bp, '/socket.io/<path:remaining>')
def socketio(remaining):
    print('connected')
    try:
       app = current_app._get_current_object()
       socketio_manage(request.environ, {'/notification': LiveNotificationNamespace, '/log': LiveLogNamespace}, app)
    except:
        current_app.logger.error("Exception while handling socketio connection",
                             exc_info=True)
    return Response()

我添加了一个打印命令进行测试,但它没有打印任何东西。我已经更新了Varnish配置,通过Varnish运行websockets:

sub vcl_pipe {
 if (req.http.upgrade) {
     set bereq.http.upgrade = req.http.upgrade;
 }
}
sub vcl_recv {
 if (req.http.Upgrade ~ "(?i)websocket") {
     return (pipe);
 }
}

我是否需要在EC2上配置任何类似的东西?

谢谢。

0 个答案:

没有答案