-
Notifications
You must be signed in to change notification settings - Fork 5
edonjs
dbohdan edited this page May 18, 2020
·
1 revision
By @rkeene. See https://chiselapp.com/user/rkeene/repository/karen/.
#! /usr/bin/env edonjs
/*
* JavaScript using the Tcl runtime:
*/
server = runtime.socket('-server', function(sock, addr, port) {
console.info("New connect from", addr, port, "as", sock);
runtime.fileevent(sock, 'readable', function() {
var line, e;
try {
line = runtime.gets(sock);
if (runtime.eof(sock) && line === '') {
console.info("EOF on sock", sock, "from", addr, port);
runtime.close(sock);
return;
}
console.debug("New data from", sock, ":", line);
} catch (e) {
console.error("Error processing sock", sock, ":", e);
console.info("Closing sock", sock, "from", addr, port);
runtime.close(sock);
}
});
}, 9313);
/*
* Pure Tcl version:
*
* set server [socket -server {apply {{sock addr port} {
* puts "I> New connect from $addr $port as $sock"
* fileevent $sock readable [list apply {{sock addr port} {
* try {
* set line [gets $sock]
* if {[eof $sock] && $line eq ""} {
* puts "I> EOF on sock $sock from $addr $port"
*
* close $sock
* return
* }
*
* puts "D> New data from $sock : $line"
* } on error e {
* puts "E> Error processing sock $sock : $e"
* puts "I> Closing sock $sock from $addr $port"
* close $sock
* }
* }} $sock $addr $port]
* }}} 9313]
*/