管理ページにシステム ログを表示できるようにする新機能を実行しています。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
ソケットの接続は成功したようですが、サーバーから何も取得できません。
ここに私のバックエンドコードがあります:
@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 を介して websocket を実行するように、Varnish の構成を既に更新しました。
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 などで何かを構成する必要がありますか?
ありがとうございました。