node.jsを用いてサーバーを立ち上げ、htmlファイルとの双方向通信がしたいです。
例えば、htmlフォームに名前とidを打ち込んだら、サーバーターミナルに
{name:~ ,id:}と出力されるかつhtmlターミナルに「helloあなたのidは~です」。
と出力されるようにしたいです。
server.js内にコードを全て書いたらエラーなく実行出来たのですが、
server.jsとsocket.jsに分けて別ファイルにすると、 node server.jsで実行すると、htmlの方でエラーが起きます
js
1server.js 2 3var app = require("http").createServer(handler), 4fs = require("fs") ; 5var socket = require("./socket.js"); 6 7app.listen(3000) ; 8console.log("server start!"); 9 10function handler(req,res){ 11 12 fs.readFile(__dirname+"/index.html",function(err,data){ 13 if(err){ 14 res.writeHead(500); 15 return res.end("Error"); 16 } 17 18 res.writeHead(200); 19 res.write(data); 20 res.end(); 21 22 }) 23} 24module.exports=app ; 25
js
1socket.js 2 3var app = require("./server.js"); 4var socketIO = require('socket.io'); 5var io = socketIO.listen(app) ; 6 7 8io.sockets.on("connection",function(socket){ 9 10 socket.on("emit_data",function(data){ 11 console.log(data); 12 socket.emit("data_from_server","あなたの名前は「" + data.name + "」です。" + "あなたのpasswordは「" + data.password + "」です。") ; 13 }) ; 14}); 15
html
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="utf-8"> 5 <title>socket.io</title> 6</head> 7<body> 8 <form name="myid"> 9 <input type="text" name="name"> 10 <input type="number" name="id"> 11 <input type="submit" value="送信"> 12 13 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"> 14 </script> 15 <script src="/socket.io/socket.io.js"></script> 16 <script> 17 18 function act(){ 19 var socket = io.connect(); 20 $('form[name="myid"]').submit(function(e){ 21 socket.json.emit("emit_data",{ 22 name:$('input[name="name"]').val(), 23 password:$('input[name="id"]').val() 24 }); 25 e.preventDefault();//submitの実行を止める 26 }); 27 socket.on("data_from_server",function(data){ 28 console.log(data); 29 }); 30 }; 31 act() ; 32 33 34 35 </script> 36 37 </body> 38 </html> 39
これからsocket.jsで沢山コードを書いていくので分けて考えたいです。よろしくお願いします
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/10 07:12
2018/09/10 07:15
2018/09/10 07:19
2018/09/10 07:22 編集
2018/09/10 07:28