3

私は、Socket.IO を使用してサーバーからクライアントに接続するリアルタイム データ通信プラットフォームに取り組んでいます。サーバーは Node.JS を実行しており、クライアントは Atom のElectronを使用した Web ページ形式のデスクトップ アプリケーションです。

クライアントでメッセージを完全に受信していますが、メッセージを送信しようとすると、次の形式で送信されます。

window.socket.emit('embed',{'...'});

サーバーはエラー ハンドラーをトリガーします。

socket.on('error',function(err) {
    console.log('client error: '+JSON.stringify(err));
});

ログに次のように表示されます。

client error: {}

クライアント側で Socket.IO をデバッグすると、メッセージが送信されたときのログで次のことが明らかになります。

[14184:0511/184052:INFO:CONSOLE(1)] "socket.io-client:manager writing packet %j +10s", source: https://cdn.socket.io/socket.io-1.3.5.js (1)
[14184:0511/184052:INFO:CONSOLE(1)] "socket.io-parser encoding packet %j +819ms", source: https://cdn.socket.io/socket.io-1.3.5.js (1)
[14184:0511/184052:INFO:CONSOLE(1)] "socket.io-parser encoded %j as %s +0ms", source: https://cdn.socket.io/socket.io-1.3.5.js (1)
[14184:0511/184052:INFO:CONSOLE(2)] "%cengine.io-client:socket %cflushing %d packets in socket%c +820ms", source: https://cdn.socket.io/socket.io-1.3.5.js (2)

これが発生している理由の手がかりはありますか?

編集:

クライアントとサーバーの両方が Socket.IO バージョン 1.3.5 を実行しています。

また、console.log を使用してエラー オブジェクトをログに記録しようとすると、コンソールに次の行が表示されます。

[TypeError: Property 'undefined' of object #<Object> is not a function]

サーバー上のエラーイベントにバインドされた関数は、エラーオブジェクトを受け入れるように設計されていないと思います。

編集:

サーバー側では、このコードが実行されて Socket.IO 接続が開始されます。

var io = require('socket.io')(1415);

io.on('connection',function(socket) {
    console.log('connection');

    socket.on('error',function(err) {
        console.log('client error: '+JSON.stringify(err));
        console.log(err);
    });

    socket.on('embed',function(obj) {
        var type = obj.type;
        var id = obj.id;
        console.log('--------------------------------------------');
        // ...
        // Additional Application Logic
    });
});

クライアント側では、次のコードが実行されます。

window.socket = io('http://localhost:1415');

// When the message is emitted, this code is run. This code is run on a delay, and after messages have been received, so assume a connection is already established
function(id) {
    var type = getType(id);
    window.socket.emit('embed',{id:id,type:type});
}();

編集(再度):

他のメッセージは正常に送受信できます。

Web インスペクターのネットワーク パネルを使用して生のネットワーク データを調べると、次のことがわかります。

エラー

4

0 に答える 0