Stéphane, That's not really a challenge ;-) The second example is too simple to be useful, but this would be the Zn equivalent: (ZnServer defaultOn: 1337) logToTranscript; delegate: (ZnValueDelegate with: [ :request | ZnResponse ok: (ZnEntity text: 'Hello World!') ]); start. ZnClient get: 'http://localhost:1337'. (ZnServer defaultOn: 1337) logToTranscript; delegate: (ZnValueDelegate with: [ :request | ZnResponse ok: (ZnEntity with: request contents) ]); start. ZnClient post: 'http://localhost:1337' data: (ZnEntity text: 'Echo'). ZnServer stopDefault. Smalltalk is a beautiful language, isn't it ? Sven PS: the delegate object has to respond to #handleRequest:. In earlier versions, it was a block, now ZnValueDelegate translates #handleRequest: to #value:. I thought that was clearer. For publicity reasons, maybe I could add a #delegateBlock: convencience accessor. On 30 Jun 2011, at 17:07, Stéphane Ducasse wrote:
Hi guys
apparently people get excited by nodeJS and I would like to know the equivalence of
var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res .end('Hello World\n'); }).listen(1337, "127.0.0.1");
console.log('Server running at http://127.0.0.1:1337/'); To run the server, put the code into a file example.js and execute it with the node program:
% node example.js Server running at http://127.0.0.1:1337/
Here is an example of a simple TCP server which listens on port 1337 and echoes whatever you send it:
var net = require('net'); var server = net.createServer(function (socket) { socket.write("Echo server\r\n"); socket.pipe(socket); });
server.listen(1337, "127.0.0.1");
we should communicate better :)
Stef