python實現WebsocketServer 服務端

python 實現weisocket服務端用到的庫爲:websocket-server 0.4  :

https://pypi.org/project/websocket-server/0.4/

https://github.com/Pithikos/python-websocket-server

服務端代碼:

#coding:utf-8

from lib.socket.websocket_server import WebsocketServer


def startWebsocketServer():
    def new_client(client, server):
        server.send_message_to_all("Hey all, a new client has joined us")

    def mysend(client,server,msg):
        print(msg)
        server.send_message(client,"哈哈哈哈哈")
        if(msg == "_end"):         #如果收到了_end 消息,那麼斷開連接
            server.server_close()

    server = WebsocketServer(5005, host='127.0.0.1', loglevel=logging.INFO)
    server.set_fn_new_client(new_client)
    server.set_fn_message_received(mysend)
    server.run_forever()
    server.server_close()

if __name__ == "__main__":
    startWebsocketServer()

網頁端代碼:

<!DOCTYPE HTML>
<html>
   <head>
   <meta charset="utf-8">
   <title>websocket測試</title>
    
  <script type="text/javascript">
	 ws = null;
	 i = 1;

	 (function(){
		ws = null;
		i = 1;
	 })()

	 function WebSocketTest()
	 {
		if ("WebSocket" in window)
		{
		   console.log("您的瀏覽器支持 WebSocket!");
		   
		   ws = new WebSocket("ws://127.0.0.1:5005");
			
		   ws.onopen = function()
		   {
			  // Web Socket 已連接上,使用 send() 方法發送數據
			  //ws.send("hello world !");
			  console.log("socket 已經連接上!")
		   };
			
		   ws.onmessage = function (evt) 
		   { 
			  var received_msg = evt.data;
			  console.log(evt.data)
		   };
			
		   ws.onclose = function()
		   { 
			  // 關閉 websocket
			  alert("連接已關閉..."); 
		   };
		}
		else
		{
		   // 瀏覽器不支持 WebSocket
		   console.log("您的瀏覽器不支持 WebSocket!");
		}
	 }
   
   function sendMsg(){
		ws.send("hello world" + i++);
   }

   function myclose(){
		ws.send("_end");
		ws.close()
		console.log("執行了斷開連接...")
   }
  </script>
        
   </head>
   <body>
   
      <div id="sse">
         <button onclick="WebSocketTest()">連接服務器</button>
		 <button onclick="sendMsg()">發送消息</button>
		 <button onclick="myclose()">斷開連接</button>
      </div>
      
   </body>
</html>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章