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 obj | 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 ! !