1

私はnode.jsとsocket.ioで遊んで始めましたが、それを作成する方法がわからないので、ブラウザに「url:port」と入力する必要はなく、URLだけを入力する必要があります。代わりに、URL を入力するだけで、すべてが表示されるはずです。未完成のシングル プレイヤー ゲームのように、http: //space.bonsaiheld.org/ (ご想像のとおり、マルチプレイヤーにしたいのです)。ポート 80/443 は Web サーバー専用であるため、ゲームをポート 80/443 で実行しないでください。

次のようにする必要があります: http://ondras.zarovi.cz/games/just-spaceships/ "ip/url: port" ではありません。どうやってするか?

app.js

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

// Start the server on port 9000
app.listen(9000);

// Send index.html to the player
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);
  });
}

// Connection listener
io.sockets.on('connection', function (client)
{
    console.log('New connection established.');
}); // Connection listener

index.html

   <html>
    <head>
    <meta charset="utf-8">
    <title>Mehrspielerklötzchen</title>
    <script src="/socket.io/socket.io.js"></script>
    </head>
    <body>
    <canvas id="canvas" style="background: #000000;">
    <script>

    // Socket.IO
    var socket = io.connect('http://localhost:9000');

    </script>
    </body>
    </html>

編集: 基本的には、ゲームがポート 9000 で実行されることを望んでいますが、index.html は URL:Port ではなく、sub.domain.com/game/ のような通常の/ポートレス URL 経由で到達可能です。

EDIT 2: 私の 2 つの問題は別の問題であるため、質問を 1 つだけに減らしました。

編集3:解決しました!私はそれを自分で考え出しました、それは完全に簡単です:

新しい非常に単純化されたサーバー コード:

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

// Connection listener
io.sockets.on('connection', function (client)
{
    console.log('Connection established.');
}); // Connection listener

新しい index.html (file://folder/index.html からアクセス可能)

<html>
<head>
<meta charset="utf-8">
<title>Mehrspielerklötzchen</title>
<script src="http://localhost:9000/socket.io/socket.io.js"></script>
</head>
<body>
<canvas id="canvas" style="background: #000000;">
<script>

// Socket.IO
var socket = io.connect('http://localhost:9000');

</script>
</body>
</html>

助けてくれたみんなに感謝します。ポートリダイレクトでも機能したと思います。しかし、私はそれさえ必要としないようです。これで、Apache はいつものようにファイルを提供しますが、socket.io はポート 9000 をリッスンし、index.html (または必要なファイル) はサーバーに接続します! これは、このファイルが別のサーバーやローカルであっても、どこにでもある可能性があることも意味します。完全。:))

4

1 に答える 1