1

node.js、socket.io、express を使用して 2 人のプレイヤー向けのゲームを作成しています。

遊びに来た第三者からの影響を避けるために、私は遊ぶ準備ができている 2 人に特定の URL を生成したいと考えています。

そこで質問なのですが、2人来た時にURLを変更するにはどうすればいいですか?

現在、ローカルでテストしています。サーバー側では、サーバーにポートをリッスンさせます。

 var express = require('express');
 var SocketIO = require('socket.io');
 var http = require('http');
 var path = require('path');

 var app = express({
   views: path.join(__dirname, 'views')
 });

 app.use('/assert', express.static(path.join(__dirname, 'assert')));
 app.engine('html', require('ejs').renderFile);

 app.get('/', function (req, res) {
   res.render('home.html', {layout: false});
 });

 var server = http.createServer(app);
 var sio = SocketIO.listen(server);
 server.listen(8080);  

 function(...){...}

クライアント側では、ソケットがどこかに接続されています。

 var socket = io.connect('http://' + location.host);
 var ....

私がする必要があるのは、2 つのクライアントが入ってきたことを検出したときにボタンを提供することだと思います。クリックすると、生成された新しい URL にリダイレクトされます。

そのため、古い URL と多くの新しい URL があります...

次に、サーバーとクライアントの両方で異なる URL を設定するにはどうすればよいですか??

どんな助けでも大歓迎です^ ^

4

1 に答える 1

1

UNIQUE ランダム URL を生成するには、さまざまな方法があります。1) タイムスタンプを使用して、事前定義された URL に追加します。2) 乱数ジェネレーターを使用します。これは、純粋な JavaScript 関数 Math.Random() または node によって提供される関数のいずれかによって実行できます。

例えば。

var url = "http://www.yourHostName.com/"+(Math.Random()*(UpperLimit-LowerLimit)+(LowerLimit));

100000 のような大きな UpperLimit (必要性と予想されるトラフィックによる) と LowerLimit = 0 を指定します。または、次のようなタイム スタンプを使用します。

var url = "http://www.yourHostName.com/"+ new Date.getTime();

これに加えて、ノードを使用して同じタスクを実行することもできます。同様のタスクを実行できる node-uuid というモジュールがあります。この質問を参照してください: node.js サーバーで URL を生成します。

一意の URL と、同じ生成された URL に送信するクライアントへの参照を取得したら。次に、次を使用してそれらをリダイレクトします。

response.writeHead(301,
{Location: url};       //one you generated
);
response.end();
于 2013-06-16T09:57:28.130 に答える