NodeJsに基づくLANチャットルーム
9256 ワード
1.このシステムはnodeJsに基づいて、electronはデスクトップの簡単なチャットシステム(1対1)を開発することを目的としています.2.nodeJsに基づくsocketプログラミング
構想:まずサーバーが必要で、中継サービスをして、論理的な判断をして、それによって一対のチャットの目的のクライアントがサーバに接続するだけで、一定のデータフォーマットを制定してデータを送信すればいいです.具体的なインターフェースはelectronで処理します.
サーバコード:
構想:まずサーバーが必要で、中継サービスをして、論理的な判断をして、それによって一対のチャットの目的のクライアントがサーバに接続するだけで、一定のデータフォーマットを制定してデータを送信すればいいです.具体的なインターフェースはelectronで処理します.
サーバコード:
var net = require('net'); // net ( TCP SOCKET)
var PORT = 8080; //
var server = net.createServer(); // tcp
var room = [];//
//on , ,
server.on('connection', function (socket) { // connect , , ,
// TCP socket,
console.log("new connection" + socket.remoteAddress + ':' + socket.remotePort);
socket.on('data', function (data) { // socket , socket
var data = JSON.parse(data.toString().trim()); //JSON.parse json json 【socket / 】
// data
var from = data.from;
var to = data.to;
var msg = data.msg;
// json , 1 1
var singelRoom = {
"name1": from,
"name1S": socket,
"name2": to
}
// json
if (room.length == 0) {
room.push(singelRoom);
}
var flag = 0;
//
for (var i in room) {
//
if ((room[i].name1 == from && room[i].name2 == to) || (room[i].name1 == to && room[i].name2 == from)) {
flag = 1;
// socket
if(room[i].name1 == from){
room[i].name1S = socket;
}
if(room[i].name2 == from){
room[i].name2S = socket;
}
// socket json socket
if (room[i].name1S == socket) {
if (room[i].name2S != null) {
var toSocket = room[i].name2S;
toSocket.write(msg);
} else {
// socket data , socket ( , )
socket.write(" ");
}
} else {
room[i].name2S = socket;
if (room[i].name1S != null) {
var toSocket = room[i].name1S;
toSocket.write(msg);
} else {
socket.write(" ");
}
}
}
}
if (flag == 0) {
//console.log("first");
room.push(singelRoom);
//console.log(room.length);
socket.write(" ");
}
});
// close ( )
socket.on('close', function () {
// socket
if(socket!=null){
for (var i in room) {
if(room[i].name1S==socket){
room[i].name1S=null;
}
else if(room[i].name2S==socket){
room[i].name2S=null;
}
else{
break;
}
}
}
console.log('A client closed');
});
// socket ,
socket.on('error',(err)=>{
console.log(" !"+err);
});
});
server.on('error', function (err) {
console.log('server error:', err.message);
});
server.on('close', function () {
console.log('server closed');
});
// 0.0.0.0 8080
server.listen(PORT, '0.0.0.0');
クライアント:ページ(index):[ここで使うelectronはindex]と関連するjsだけです.具体的なmain.jsの知識はelectron関連の文書をご覧ください.]
...
by / (echoun)
:
: