2

エラーが発生しています:

ポート エラー: 接続を確立できませんでした。受信側が存在しません。

しかし、これを修正する方法がわかりません。これが私のコードです:

サーバー (app.js)

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

server.listen(8088);

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

io.sockets.on('connection', function (socket) {

  socket.emit('news', { hello: 'world' });

  socket.on('set nickname', function (name) {
    socket.set('nickname', name, function () { socket.emit('ready'); });
  });

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

    socket.get('nickname', function (err, name) {
      console.log('Chat message by ', name);
    });

  });

});

クライアント (index.html)

<script src="/socket.io/socket.io.js"></script>
<script>
  var socket = io.connect('http://localhost:8088');

  socket.on('news', function (data) {
    console.log(data);
  });

  socket.on('connect', function () {
    socket.emit('set nickname', prompt('What is your nickname?'));

    socket.on('ready', function () {
      console.log('Connected !');
      socket.emit('msg', prompt('What is your message?'));
    });

  });
</script>

編集

クライアントから削除socket.connect()しましたが、それでも同じエラーが発生します

4

5 に答える 5

1

クライアント側で socket.connect() を使用したことがなく、そのエラーを見たことがないので、それがエラーの原因だと思います。

クライアントサイドで

var socket = io.connect('http://localhost:8088')

接続を確立するために呼び出す必要があるのは、ebohlman だけである必要があります。es ebohlman は、クライアント側には接続イベントがないと述べています。

io.sockets.on('connection',function(){
  socket.emit('connect',{...})
})

http://socket.io/のフロント ページに簡単な例があります。

于 2012-09-19T12:43:46.497 に答える
0

私の知る限り、iosocketのconnectイベントは、クライアントが接続を確立したときにサーバー側で発生するものであり、サーバーへの接続が成功したときにクライアント側で発生するものではありません。私が正しければ、クライアント側のコードは代わりに「ニュース」イベント (サーバーが接続を確認したときに表示されるはずです) に応答する必要があります。

于 2012-09-19T08:37:20.133 に答える
0

彼のコードは問題ないようです。
クライアント側socket.on("connect")では、指定されたサーバーに接続されたときにトリガーされます。
ポートの問題である可能性があります。別のポートを試してください。
クライアント側とサーバー側の両方のイベントを次に示します
https://github.com/LearnBoost/socket.io/wiki/Exposed-events

于 2013-01-04T22:00:17.880 に答える
0

この種のエラーはコードとは関係がないため、無視してかまいません。それらはあなたのコードに干渉しません。それらはブラウザの拡張機能から発生し、通常はローカル ファイルに接続しようとします。その特定のエラーについて、より多くの投稿を見つけることができます。それで分かった!

于 2013-06-27T20:42:53.030 に答える
0

8088 の代わりにポート 3000 または 5000 を試す

于 2013-01-04T19:48:39.187 に答える