私はsocket.ioを使用してnode.jsサーバーを作成したいと思っていますが、私は初心者の方です。私はexpressとapp.jsの使い方を学ぶべきだが、http、js、socket.ioのパッケージだけでnode.jsの能力に達したら、それを行う予定です。私は約1時間オンラインで見て、私の問題を助けるものは何も持っていません。私がsocket.ioに持っている主な問題は、クライアント側では、関数io();動かない。私はbodyタグの上のスクリプトリンクのパスをサーバプロジェクトのディレクトリにあるファイルにリダイレクトしようとしましたが、require();というエラーが返されました。関数ではありません。私はこのテキストの壁の下で、私が使用しているファイルのいくつかを含んでいます(しかしそれらすべてではありません)。これが間違って書式設定されている場合、または間違っている場合は、私が最初にスタック交換を使用して質問するので、私を許してください。このため、ここに従うフォーマットに適したものにするためにこれを編集する十分な評判があれば、してください。Socket.ioはnode.jsを使っていません。
まず、私のサーバーファイル:
const http = require('http');
const fs = require('fs');
const io = require('socket.io')(http);
function socketReq(soc){
soc.emit("test", {"user":"test", "text":"testing da socket"});
}
io.on("connection", socketReq);
function server(req,res){
console.log('A user tried to connect to mazeserver.localtunnel.me'+req.url)
if(req.url == '/'){
console.log('Sending html...');
res.writeHead(200, {"Context-Type":"text/html"});
fs.createReadStream('./index.html').pipe(res);
}else if(req.url == '/pong.js'){
console.log('Sending JS...');
res.writeHead(200, {"Context-Type":"text/JavaScript"});
fs.createReadStream('./pong.js').pipe(res);
}else {
console.log('Error 404: file .'+req.url+' not found');
res.writeHead(404, {"Context-Type":"text/html"});
fs.createReadStream('./404.html').pipe(res);
}
}
http.createServer(server).listen(1337);
console.log('Server created');
そして今、私のメインのhtmlファイル:
<html id='html'>
<head>
<title>Maze server</title>
<center>
<hr><br>
<h1>Welcome to my test server!</h1>
<br><hr>
<p>This is some text to test</p>
</center>
<script type='text/JavaScript'>
document.getElementById('html').style.hide = "true";
document.onload = function(){
document.getElementById('html').style.hide = "false";
}
var clicks = 0;
function clickButton(){
clicks++;
document.getElementById('clicks').innerHTML = clicks;
}
</script>
</head>
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io();
</script>
<body>
<center>
<button onClick='clickButton();'>Im a button</button>
<p>You've clicked me <span id='clicks'>0</span> times. Ouch!</p>
<br><hr>
<p>Test canvas:</p>
<canvas id='canvas' width='400' height='200'></canvas>
<script src='pong.js' type='text/JavaScript'></script>
<br>
<br>
<button onClick='bounce();'>Bounce!</button>
<br>
<button onClick='speed("x");'>Speed up X</button>
<button onClick='speed("y");'>Speed up Y</button>
<br>
<button onClick='speed("x"); speed("y");'>Speed up both</button>
<br>
<button onClick='resetXY();'>Reset</button>
<br><hr>
</center>
<p>"Copyrite" <strong><blink type='EasterEgg' mazeiness='true'>MazeOfEncryption</blink></strong> 2048. Because why the heck not.</p>
</body>
</html>
以上のファイルが必要な場合は、私は私が、含めるべきファイルを教えてくださいは、問題がこの2つのファイルのいずれかにあるとします。事前のおかげで、
-Maze
あなたは方法を見つけるためにsocket.io仕様に見ることができます。 'express 'にアタッチすると、いくつかのハンドシェイクPOSTとGETリクエストを処理するためのルートが追加されるためです。 –
基本的には、明示せずに正しく動作させるためにいくつかのものを追加する必要がありますか?より具体的になりますか? – Programah
ここのsocket.io docの中にあります:http://socket.io/docs/#using-with-node-http-server。プレーンなhttpサーバと明示されていないSocket.io。または独自のWebサーバーを作成しなくても:http://socket.io/docs/#using-it-just-as-a-cross-browser-websocket(socket.ioは自分自身を作成します)。参考までに、socket.io以外のURLを処理する必要がある場合、Expressは実際にはそれほど簡単ではありません。そうでなければ、単にsocket.ioでプレーンなhttpサーバを使うことができます。 – jfriend00