1

Windowsで現在の最新バージョンのnodejs + socket.ioを使用して単純なアプリケーションを開発しています。クライアント側でソケットが作成されたときに問題が発生しましたが、socket.emit を実行すると、コンソールに次の出力が表示されます (Google Chrome を使用):

GET http://0.0.34.184:8888/socket.io/1/?t=1321385855665&jsonp=0

localhost:8888 でテストしているので、0.0.34.184 ではなく、少なくとも 127.0.0.1 である必要があるため、これは非常に奇妙です。ページ上の socket.io クライアントは、タグ内のサーバーから次のように要求されます。

<script type="text/javascript" src="socket.io/socket.io.js"></script>

次に、次のコードを使用して接続します。

socket = io.connect('localhost:8888');
socket.on("my_event", receiveNetEvent);

console.log('LOG: sio init complete, socket=' + socket);

ログには、null または未定義ではない socket=[Object object] と記載されているため、すべてが機能するはずです。

送信自体は、次の関数で実行されます。

function sendRequest(request){
    socket.emit('request', request);
}

関数に渡されるリクエスト オブジェクトは、次のように作成されて渡されます。

var initRequest = {};
initRequest.subject = 'weather';
initRequest.key = 'initial';

sendRequest(initRequest);

また、これは有効な json オブジェクトですconsole.log()

これらすべてにより、考えられる理由について私はまったく無知になります。

4

3 に答える 3

2

接続パスに http:// を追加してみてください。それは私のためにこのエラーを解決しました。

socket = io.connect('http://localhost:8888');
于 2012-03-02T11:55:45.667 に答える
1

私は同じ問題に直面しましたが、別の理由がありました。私のセットアップは、ポート9000のTomcatサーバーでソケットクライアントを実行し、nodejsを実行しているlocalhost:80に接続していましたが、デフォルトで80であっても、ポートが必須であることに気づきませんでした。

だから私はポートを与えて交換しました

io.connect('http:// localhost')with io.connect('http:// localhost:80')

両方のサーバーが同じドメインを指しているため、この場合はlocalhost ...socketioが何らかの理由でポート9000を使用していました。

それが誰かを助けることを願っています。

于 2012-06-30T15:04:34.157 に答える
1

私も同じ問題に直面していましたが、xhr-pollingのみをサーバー側のjavascriptに強制することで解決しました。

    var io = require('socket.io').listen(8000);
    io.configure(function () {
      io.set('transports', ['xhr-polling']);
    });
<..Rest code..>
于 2012-09-24T05:54:13.520 に答える