0

Node js を使用して簡単なチャット アプリケーションを作成しようとしています。Windows オペレーティング システムを使用しています。ローカル サーバーとして Xampp を使用しています。ノードをインストールしました。package.json を使用して socket.io もインストールしました。package.json のコードを以下に示します。

{
    "name":"chat",
    "version":"0.0.1",
    "private":"true",
    "dependencies":{
        "socket.io":"0.9.16",
        "express":"3.4.0"
    }
}

次に、サーバー用のコードを作成しました。Node サーバーはポート 1337 で実行されています。サーバーのコードを以下に示します。

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

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

それから私がそれを実行すると、それは実行されています。次に、クライアントのコードを index.php ファイルに記述しました。クライアントのコードを以下に示します。

<!DOCTYPE html>
<html>
<head>
    <title>Chat app.</title>
</head>
<body>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
    <script src="/node:1337/socket.io/socket.io.js"></script>
    <script type="text/javascript">
        $(document).ready(function(){
            var socket = io.connect('http: // localhost / node : 1337');
            socket.on('news', function (data) {
                console.log(data);
                socket.emit('my other event', { my: 'data' });
            });
        });
    </script>
</body>
</html>

しかし、ブラウザで実行しようとすると、コンソールに表示されるのはアクセスが禁止されていることだけです。node_modules を含むすべてのファイルは に保存されC:\xampp\htdocs\nodeます。

4

1 に答える 1

1

使用しているコードは socket.ioホームページからコピーされたものであり、例としてのみ使用されていますが、socket.io スクリプトはサーバー インスタンスにバインドされていないため、実際には動作するコードではありません。

Socket.io はサーバーではありません。これは、Websocket を適切に処理するための単なるライブラリです。socket.io を使用するには、HTTP または Express を要求し、サーバー インスタンスを作成する必要があります。次に、サーバー インスタンスを socket.io にバインドする必要があります。

サーバーで socket.io を起動して実行する方法に関する実用的な実装については、使用方法のページを参照する必要があります。実行している実装に応じて、これらの優れたコード例があります (HTTP の場合、またはその他の場合)。

したがって、Xampp サーバーのアイデア全体をスクラッチします。ノードには独自のサーバー機能が組み込まれており、それを使用することを意図しています。

これは、Socket.io が HTTP でどのように使用されるかを示す (socket.io Web サイトからの) 実際の例です。このコード スニペットでは、サーバーも作成されているため (ポート 80 でリッスンしている)、それについて心配する必要はありません。

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

app.listen(80);

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);
  });
});

サーバーが稼働したらlocalhost:80、ブラウザに入力してアクセスできます。

于 2013-09-25T22:05:17.330 に答える