|
@@ -0,0 +1,46 @@
|
|
|
+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: '<html><p>Request HTTP version: ', httpVersion, '</p>';
|
|
|
+ nextPutAll: '<p>OS hostname: ', hostname, '</p>';
|
|
|
+ nextPutAll: '<p>Number of requests: ', counter asString, '</p></html>'.
|
|
|
+ ^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'');'}
|
|
|
+! !
|