Python tornado websocker客户端编程

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <a href="javascript:WebSocketTest()">Run WebSocker</a>
    <div id="messages">


    </div>



</body>
<script>
    var messageContainer=document.getElementById("messages");
    function WebSocketTest() {
        if ("WebSocket" in window){
            messageContainer.innerHTML='Web Socket is supported by your browser';
            var ws=new WebSocket("ws://localhost:8888/websocket?id=1");
            ws.onopen=function () {
                ws.send("Message To Send");
            };
            ws.onmessage=function (p1) {
              var receivemasg=p1.data;
              messageContainer.innerHTML=messageContainer.innerHTML+"<br>Message is received :"+receivemasg;



            };

            ws.onclose=function (p1) {

                messageContainer.innerHTML=messageContainer.innerHTML+"<br>Connection is closed .. :"+receivemasg;


            }




        }else{
            messageContainer.innerHTML="您的电脑不支持webSocker";
        }
    }
    
    
</script>

</html>

#coding:utf-8

import  tornado
from tornado.ioloop import IOLoop
import tornado.websocket
import tornado.web
from tornado.options import define,options,parse_command_line

define("port",default=8888,help="run on the given port",type=int)

clients=dict()

class IndexHandler(tornado.web.RequestHandler):
    @tornado.web.asynchronous
    def get(self, *args, **kwargs):
        self.render("../templates/index.html")


class MyWebSocketHandler(tornado.websocket.WebSocketHandler):
    def open(self, *args, **kwargs):
        self.id=self.get_argument("id")
        self.stream.set_nodelay(True)
        clients[self.id]={"id":self.id,"object":self}

    def on_message(self, message):
        print("Client %s received a message %s  "%(self.id,message))
    def on_close(self):
        if self.id in clients:
            del clients[self.id]
            print("Client %s is closed "%self.id)
    def check_origin(self, origin):
        return True

app=tornado.web.Application(handlers=[
    (r"/",IndexHandler),
    (r"/websocket",MyWebSocketHandler)

],static_path="templates")
import threading
import time

def sendTime():
    import datetime
    while True:
        for key in clients.keys():
            msg=str(datetime.datetime.now())
            clients[key]["object"].write_message(msg)
            print("write to client %s :%s"%(key,msg))
        time.sleep(1)

if __name__ == '__main__':
    threading.Thread(target=sendTime).start()
    parse_command_line()
    app.listen(options.port)
    IOLoop.instance().start()

猜你喜欢

转载自blog.csdn.net/douyunqian668/article/details/80392649
今日推荐