Socket.ioでコンソールベースのチャットを作ってみる
Socket.IOの勉強がてら、よくある簡単なチャットを作ってみた。
Socket.IOのドキュメントや色々な記事ではブラウザベースのチャットの例が多いが、今回はコンソールベースのチャットを作った。
サーバの実装
const io = require('socket.io')();
io.listen(3000);
io.on('connection', (socket) => {
console.log(`connected, id: ${socket.id}`);
socket.on('chat message', (user, message) => {
data = `${message} from ${user}`;
console.log(data);
socket.broadcast.emit('chat message', data);
});
socket.on('disconnect', () => {
console.log(`disconnected, id: ${socket.id}`);
});
});
クライアントの実装
const readline = require('readline');
const socket = require('socket.io-client')('http://localhost:3000');
const user = process.argv[2];
rl = readline.createInterface(process.stdin, process.stdout);
rl.setPrompt('');
rl.on('line', (line) => {
socket.emit('chat message', user, line);
})
.on('close', () => {
process.exit(0);
});
socket.on('connect', () => {
console.log(`connected, id: ${socket.id}`);
});
socket.on('chat message', (data) => {
console.log(data);
});
socket.on('error', (err) => {
console.log('Error:', err);
});
socket.on('disconnect', () => {
console.log('disconnected');
});
サーバ起動
$ node index.js
クライアント起動
$ node client.js $USER_NAME
サーバはメッセージをブロードキャストするようにしているので、クライアントを複数起動すれば、チャットみたいなことができる。
Author And Source
この問題について(Socket.ioでコンソールベースのチャットを作ってみる), 我々は、より多くの情報をここで見つけました https://qiita.com/takehilo/items/dd64d999058cb1dd2c79著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .