コードを見る感じだと、多分index.htmlの読み込みに失敗していそうです。
「Error」が描画されそうなところはここだけみたいなので。
app.jsとindex.htmlは同じディレクトリに置いていますか?
また、console.logをつかって「err」の値を確認してみるとどんなことが起こっているかがわかるかもしれません。
socket.ioを実行したいのですが、できません。
「node app.js」とすると何も表示されず、webページには以下のように「Error」と表示されます。
解決策があれば、教えていただけないでしょうか。
app.js
var app = require('http').createServer(handler); io = require('socket.io')(app); fs = require('fs'); app.listen(8082); io.use('log level', 1); function handler(req, res) { fs.readFile(__dirname + '/index.html', function(err,data) { if(err) { res.writeHead(500); return res.end('Error'); } res.writeHead(200); res.write(data); res.end(); }) } io.sockets.on('connection', function(socket){ socket.on('emit_from_client', function(data){ // console.log(data); // socket.emit('emit_from_server', 'hello from server: ' + data); // socket.broadcast.emit('emit_from_server', 'hello from server: ' + data); //io.sockets.emit('emit_from_server', '[' + socket.id + '] : ' + data); socket.client_name = data.name; io.sockets.emit('emit_from_server', '[' + socket.client_name + '] : ' + data.msg); }); });
index.html
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>socket.io</title> </head> <body> <form id="myForm"> <input type="text" id="msg"> <input type="submit" value="Send!"> </form> <ul id="logs"></ul> <script src="/socket.io/socket.io.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(function(){ var socket = io.connect(); $('#myForm').submit(function(e){ e.preventDefault(); socket.emit('emit_from_client', $('#msg').val()); $('#msg').val('').focus(); }); socket.on('emit_from_server', function(data){ $('#logs').append($('<li>').text(data)); }); }); </script> </body> </html>
あなたの回答
tips
プレビュー