Bart Admiraal
Bart Admiraal

Reputation: 51

How can i make my Tornado server render javascript?

I am fairly new to the world of programming and i am trying to create this raspberry-pi server to control some electronics over the internet. But it seems that the code i copied and wrote does not allow for the java-script to be executed by the webpage. How do i change my code so that it also renders the java-script?

Sorry for the bad English.

Python code:

import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
import tornado.websocket

class WebServer(tornado.web.RequestHandler):
    def get(self):
        self.render("index.html")

class WebSocket(tornado.websocket.WebSocketHandler):
    def check_origin(self, origin):
        return True

    def open(self):
        print("Connection opened")
        self.write_message("Connection opened")

    def on_close(self):
        print("Connection closed")

    def on_message(self, message):
        print("message received: " + str(message))

def main():
    tornado.options.parse_command_line()
    app = tornado.web.Application(handlers=[(r"/", WebServer)])
    app2 = tornado.web.Application(handlers=[(r"/", WebSocket)])
    server = tornado.httpserver.HTTPServer(app)
    server2 = tornado.httpserver.HTTPServer(app2)
    server.listen(80)
    server2.listen(8000)
    tornado.ioloop.IOLoop.instance().start()

if __name__ == "__main__":
    main()

Html code:

<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>liquoratus.pi</title>
    <link href="./favicon.ico" rel="icon" type="image/x-icon" />
    <script type="text/javascript" src="script.js"></script>
</head>
<body>

<h1>It works</h1>

</body>
</html>

Javascript:

var ws = new WebSocket("ws://192.168.2.6:8000/")

ws.onopen = function(){
    ws.send("Hello World");
};

ws.onmessage = function(event){
    console.log(event.data)
}

ws.onclose = function(){
    alert("Lost connection to the server!");
}

Upvotes: 0

Views: 816

Answers (2)

gre_gor
gre_gor

Reputation: 6812

Use a StaticFileHandler to serve your script.jsand favicon.ico.

Upvotes: 1

yiliangt5
yiliangt5

Reputation: 1

Javascript is not rendered. If you need html to be dynamically altered to display messeges pushed from websocket, you may need to do that by javascript.

Upvotes: 0

Related Questions