4

このフォーラムで、Socket.IO と node.js に関する投稿を見たことがあります。しかし、まだ最適に機能していません。

ポート 80 とポート 8080 は、Web サーバーでさまざまなアプリケーションに使用されます。そのため、App.js とソケット接続で、8080 の代わりにポート 8081 を追加しました。

Websocket 接続が無効ですというメッセージが表示されます。10 秒ほどで websocket が作成され、完全に使用できるようになりました。

でも10秒は長すぎる。これを修正する方法はありますか?

script.js:

 <script>
var socket = io.connect('http://domainname.nl:8081');


socket.on('connect', function(){

socket.emit('adduser', "<?php echo $user->first_name; ?>");
});

app.js

var app = require('express').createServer()
var io = require('socket.io').listen(8081);

app.listen(8081);

// routing
app.get('/', function (req, res) {
  res.sendfile(__dirname + '/index.html');
});

アップデート:

私がそれを変更したとき。私はまだ問題を抱えています。ソケットは機能しますが、接続に 10 秒かかります

 info  - socket.io started
   debug - served static /socket.io.js
   debug - client authorized
   info  - handshake authorized 15619940591959058675
   debug - setting request GET /socket.io/1/websocket/15619940591959058675
   debug - set heartbeat interval for client 15619940591959058675
   warn  - websocket connection invalid
   info  - transport end
   debug - set close timeout for client 15619940591959058675
   debug - cleared close timeout for client 15619940591959058675
   debug - cleared heartbeat interval for client 15619940591959058675
   debug - client authorized for
   debug - setting request GET /socket.io/1/xhr-polling/15619940591959058675?t=1345479037596
   debug - setting poll timeout
   debug - clearing poll timeout
4

2 に答える 2

2

app同じポートを使用して、2 つの異なるサーバー (1 つは自分用、もう 1 つは socket.io用) を効果的に起動しようとしています8081

var app = require('express').createServer()
var io = require('socket.io').listen(8081);

app.listen(8081);

次のようにポート番号を socket.io に渡すことができますが、ノード http サーバーで実行する場合はapp、次のようにリッスンするためにそれ (つまり ) を渡す必要があります。

var app = require('express').createServer()
var io = require('socket.io').listen(app);

app.listen(8081);
于 2012-08-20T14:38:56.207 に答える
0

プロキシ経由で接続するときに同じ問題が発生しました。

私のサーバー(@Linux G Thielが説明したように、express + socket.io)がリッスンし、 (ポート80)app.example.com:12345でサービスを提供するようにプロキシが設定されていました。example-app.com実際の URL からアクセスした場合は正しく機能しましたが、プロキシ経由でアクセスした場合、Websocket 接続で 10 秒の遅延が発生しました。

変更するだけで修正できました

var socket = io.connect();`

var socket = io.connect('http://app.example.com:12345')

クライアント側のコードで。

于 2013-03-11T13:03:31.407 に答える