Object subclass: #TrivialServer instanceVariableNames: 'counter' category: 'TrivialServer'! !TrivialServer methodsFor: 'initializing'! initialize counter := 0 ! ! !TrivialServer methodsFor: 'processing'! process: aRequest | hostname httpVersion stream | counter := counter + 1. "Calling a method in a js module" hostname := {'os.hostname()'}. "Accessing a property of js HTTP request object" httpVersion := {'aRequest.httpVersion'}. stream := String new writeStream. stream nextPutAll: '

Request HTTP version: ', httpVersion, '

'; nextPutAll: '

OS hostname: ', hostname, '

'; nextPutAll: '

Number of requests: ', counter asString, '

'. ^stream contents ! start | block | block := [:req :res | {'res.writeHead(200, {''Content-Type'': ''text/html''});'}. {'res.end(self._process_(req));'}]. {'http.createServer(block).listen(1337, ''127.0.0.1'');'}. {'console.log(''TrivialServer running at http://127.0.0.1:1337/'');'} ! ! !TrivialServer class methodsFor: 'initialization'! initialize "We require these Node modules." {'os = require(''os''), http = require(''http'');'} ! main self new start ! !