フロントエンドとWebソケットサーバー間のリアルタイム通信のために、socket.io.jsアプリケーションを使用してFlaskSocketIOを実装しようとしています
フロントエンドのコードは次のようになります。
$(document).ready(function() {
namespace = '/test';
var socket = io.connect('http://' + document.domain + ':' + location.port + namespace);
socket.on('connect', function() {
socket.emit('my event', {data: 'Client connected!'});
});
socket.on('my response', function(msg) {
$('#log').append('<br>' + $('<div/>').text('Received #' + msg.count + ': ' + msg.data).html());
}); });
Flask で使用しているコードは次のとおりです。
@socketio.on('my event', namespace='/test')
def receive__message(message):
socketio.emit('my response', {'data': 'Backend saw "' + json.dumps(message['data']) + '" from the frontend'})
print("Received from message data:" + json.dumps(message['data']))
FlaskSocketIO 側ではメッセージを正常に受信できますが、「my respose」メッセージを送信すると、以下のように Google Chrome の [Network] タブ内にメッセージが表示されますが、上記の「my response」の JavaScript コードに従ってアクションは実行されません。 ' イベント:
ÿ42["my response",{"data":"Backend saw \"{\"state\": \"Client Connected \"}\" from the frontend"}]
そうは言っても、フロントエンドとフラスコソケットシオの間の通信は正常に行われますが、コードのこの部分では何も起こりません...
socket.on('my response', function(msg) {
$('#log').append('<br>' + $('<div/>').text('Received #' + msg.count + ': ' + msg.data).html());
});
alert(msg) または console.log(msg) を使用してみましたが、受信したメッセージが表示されても何も表示されません...何が問題なのか手がかりはありますか? Flask が SocketIO JS プラグインの間違った形式でメッセージを生成する可能性がありますか?