socket.ioを利用してサーバー、クライアントの双方向の通信がしたいです。
サーバーからクライアントへの通信はできているのですが、クライアントからサーバーへの通信(socket.emit)ができません。
対応策をご享受ください。
現在下記のように作成をしています。
・server.js
var app = require('http').createServer(handler) var io = require('socket.io')(app); var fs = require('fs'); // HTTP サーバのポートを指定する app.listen(80); 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); }); } io.on('connection', function (socket) { // クライアントへデータ送信 // emit を使うとイベント名を指定できる socket.emit('news', { hello: 'world' }); socket.on('report', function (data) { // クライアントから受け取ったデータを出力する console.log('report-->' + data); }); });
client.js
// Client API を読み込む const io = require('socket.io-client'); // 通信先のサーバを指定する const socket = io('http://localhost'); socket.on('news', function (data) { // サーバから受け取ったデータを出力する console.log(data); // サーバへデータ送信 // emit を使うとイベント名を指定できる socket.emit('report', { my: 'data' }); // 通信を切断し、プロセスを終了する socket.disconnect(); process.exit(0); });
package.json
% cat package.json { "name": "socket.io-sample", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC", "devDependencies": {}, "dependencies": { "socket.io": "^4.5.3", "socket.io-client": "^4.5.3" } }
・環境
Mac OS
nodeバージョン:v14.18.3
・実行方法
$ node server.js
$ node client.js
これで、サーバー→クライアントの hello: 'world' はクライアント側で表示されます。
クライアント→サーバーの my: 'data' がサーバー側で表示されません。
対応策をご享受ください。
よろしくお願いします。
課題としては、クライアントからサーバーへ通信ができない
意図としては、解決方法へのアドバイスがほしい
です。
現在作成しているソースや環境も記載しています。
後学のため、具体的にはどのようなポイントを記載をすればいいのでしょうか?
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー