Last active
December 18, 2015 01:39
-
-
Save cfstras/5704964 to your computer and use it in GitHub Desktop.
Chatserver
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Bib's | |
var net = require('net'); | |
// Fettes Array | |
var clients = []; | |
// create teh server! | |
var srv = net.createServer(); | |
// connection handler, das Argument ist ein Socket mit der neuen Verbindung | |
srv.on('connection', function (conn) { | |
// Adresse speichern, bequemlichkeit | |
var addr = conn.remoteAddress; | |
console.log('connected:', conn.remoteAddress); | |
// client in array schieben | |
clients.push(conn); | |
// Man heiße den Kunden willkommen | |
conn.write('Hai there!\n'); | |
// handler für Verbindungsende | |
conn.on('end', function () { | |
console.log('disconnected:', addr); | |
var i = clients.indexOf(conn); | |
if (i !== -1) { | |
// raus mit dem Client | |
clients.slice(i,1); | |
} | |
}); | |
// Handler für eingehende Daten | |
conn.on('data',function (buf) { | |
for (c in clients) { | |
// hasOwnProperty checkt, dass nicht irgendwo eine Funktion mititeriert wird | |
if(clients.hasOwnProperty(c) && conn !== c) { | |
clients[c].write(addr + ': ' + buf.toString().trim() + '\n'); | |
} | |
} | |
// auch auf die Konsole | |
console.log(addr + ': ' + buf.toString().trim()); | |
}); | |
}); | |
// und los geht's | |
srv.listen(6112); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Bibliotheken | |
var dgram = require('dgram'), | |
repl = require('repl'); | |
var port = 6112; | |
// Adressen von anderen clients | |
var addrs = []; | |
// socket oeffnen | |
var sock = dgram.createSocket('udp4'); | |
// Commandline starten | |
var c = repl.start('>'); | |
// die Funktion send in den wortschatz aufnehmen | |
c.context.s = send; | |
// Listener fuer eingehende nachrichten | |
sock.on('message', function(msg,sender){ | |
console.log('from',sender,msg.toString()); | |
// letzte nachricht zur untersuchung in die kommandozeile aufnehmen | |
c.context.l = msg; | |
c.context.li = sender; | |
// Absender in Liste eintragen | |
if(sender.address !== "127.0.0.1") { | |
if(addrs.indexOf(sender.address)===-1) { | |
addrs.push(sender.address); | |
} | |
} | |
// Nachricht versenden | |
addrs.forEach(function(addr){ | |
if(addr !== sender.address) { | |
send(sender.address+': '+msg.toString(),addr,port); | |
} | |
}); | |
// Handler fuer das Start-Event des Sockets | |
}).on('listening', function() { | |
console.log('listening'); | |
}); | |
// Socket auf port Lauschen lassen | |
sock.bind(port); | |
// Debug-Funktion | |
function msgDelivered(err,bytes) { | |
if(err) { | |
console.log(err,'bytes:',bytes) | |
} | |
}; | |
// Hilfsfunktion zum Senden | |
function send(msg,addr,port) { | |
var msg = new Buffer(msg); | |
sock.send(msg,0,msg.length,port,addr,msgDelivered); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment