1

ブラウザがクライアントの socket.io.js を見つけられません:

<script src="/socket.io/socket.io.js"></script>

サーバーがハンドラーなしで作成された場合:

var app = require('http').createServer(handler)
  , io = require('socket.io').listen(app)
  , fs = require('fs');

app.listen(80);

//without this part:
/*function handler (req, res) {
  fs.readFile(__dirname + '/index.html',
  function (err, data) {
    if (err) {
      res.writeHead(500);
      return res.end('Error loading index.html');
    }

    res.writeHead(200);
    res.end(data);
  });
}*/

io.sockets.on('connection', function (socket) {
  socket.emit('news', { hello: 'world' });
  socket.on('my other event', function (data) {
    console.log(data);
  });
});

すべてPHPで生成するため、ハンドラー関数は必要ありません。また、index.html/php 以外のファイルに対してクライアント アプリケーション関数を使用する場合もあります。

では、ブラウザが socket.io.js を見つけられるようにするにはどうすればよいでしょうか?

4

3 に答える 3

1

これをクライアント側に含めてください!

<script type="text/javascript" src="/socket.io/socket.io.js"></script> 
var io = io.connect();
于 2014-07-01T09:07:55.117 に答える
0

http モジュール機能にアクセスする必要がない場合は、次の方法を使用します。

var io = require('socket.io').listen(80);

io.sockets.on('connection', function (socket) {
  socket.emit('news', { hello: 'world' });
  socket.on('my other event', function (data) {
    console.log(data);
  });
});
于 2012-08-27T17:33:54.850 に答える
0

socket.ioと Express 3 を使い始めるのに時間をかけたくない場合は、デモ アプリを作成しました

Websocket を機能させるには、クライアント js を Web サーバーから配信する必要があります。これは、多くのブラウザ制限の 1 つです。最も簡単なセットアップは、クライアント側の Js と WebSocket の両方を提供するノード サーバーを用意することです。Express の http モジュールを簡単に使用できます (少しやり過ぎですが、単なるテストアプリ以上のものを構築したい場合は非常に実用的です)。

それ以外の場合は、クライアント側の js が適切な場所を指すようにする必要があります。たとえば、ポート 8080 の socket.io サーバーを実行し、ポート 8000 で静的クライアント側を配信する場合 (python -m SimpleHTTPServerたとえば、通常の apache を使用してポート 80 を使用)。

<script src="http://localhost:8080/socket.io/socket.io.js"></script>
于 2012-08-27T18:02:28.353 に答える