Python通過websocket與js客戶端通訊示例
這裡,介紹如何使用 Python 與前端 js 進行通訊。
websocket 使用 HTTP 協議完成握手之後,不通過 HTTP 直接進行 websocket 通訊。
於是,使用 websocket 大致兩個步驟:使用 HTTP 握手,通訊。
js 處理 websocket 要使用 ws 模組; Python 處理則使用 socket 模組建立 TCP 連線即可,比一般的 socket ,只多一個握手以及資料處理的步驟。
握手
過程
包格式
js 客戶端先向伺服器端 python 傳送握手包,格式如下:
?1 2 3 4 5 6 7 8 |
GET
/chat HTTP/1.1
Host:
server.example.com
Upgrade:
websocket
Connection:
Upgrade
Sec-WebSocket-Key:
dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Protocol:
chat, superchat
Sec-WebSocket-Version:
13
|
伺服器迴應包格式:
?1 2 3 4 5 |
HTTP/1.1
101 Switching Protocols
Upgrade:
websocket
Connection:
Upgrade
Sec-WebSocket-Accept:
s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
Sec-WebSocket-Protocol:
chat
|
其中, Sec-WebSocket-Key 是隨機的,伺服器用這些資料構造一個 SHA-1 資訊摘要。
方法為: key+migic , SHA-1 加密, base-64 加密,如下:
Python 中的處理程式碼
?1 2 |
MAGIC_STRING = '258EAFA5-E914-47DA-95CA-C5AB0DC85B11'
res_key = base64.b64encode(hashlib.sha1(sec_key
+ MAGIC_STRING).digest())
|
握手完整程式碼
js 端
js 中有處理 websocket 的類,初始化後自動傳送握手包,如下:
var socket = new WebSocket('ws://localhost:3368');
Python 端
Python 用 socket 接受得到握手字串,處理後傳送
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
相關推薦Python通過websocket與js客戶端通訊示例這裡,介紹如何使用 Python 與前端 js 進行通訊。 websocket 使用 HTTP 協議完成握手之後,不通過 HTTP 直接進行 websocket 通訊。 於是,使用 websocket 大致兩個步驟:使用 HTTP 握手,通訊。 js [Python]通過websocket與js客戶端通訊網站大多使用HTTP協議通訊,而HTTP是無連線的協議。只有客戶端請求時,伺服器端才能發出相應的應答,HTTP請求的包也比較大,如果只是很小的資料通訊,開銷過大。於是,我們可以使用websocket這個協議,用最小的開銷實現面向連線的通訊。 這裡,介紹如何使用Python [Python]通過websocket與jsclient通信hash csdn dsm init sel host ces elf 我們 站點大多使用HTTP協議通信。而HTTP是無連接的協議。僅僅有client請求時,server端才幹發出對應的應答。HTTP請求的包也比較大,假設僅僅是非常小的數據通信。開銷過大。於是,我們能 以太坊Go、Java、Python、Ruby、JS客戶端介紹git 跟蹤 處理 p2p 純java eth 前綴 成功 contents 作者:HPB_汪曉明(HPB Team) Go Ethereum 簡介 go-ethereum客戶端通常被稱為geth,它是個命令行界面,執行在Go上實現的完整以太坊節點。通過安裝和運行get LINUX下socket實現伺服器與多客戶端通訊(一)一直對網路方面的技術比較感興趣,有時間就學習學習。雖然現在很多高階語言都已將網路程式設計部分做了封裝處理,使之使用更加方便,但是學習基礎原理,還是一個程式設計師必須要做的。 linux下的socket程式設計原理,網路上已經有大把的詳細說明,這裡不做說明,程式碼中已有簡單註釋。 具體方法,有 python :通過udp協議實現客戶端與服務端的互動(1)服務端 建立socket 繫結目的ip和埠號、 資料互動 import socket udpSer = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) #這裡的SOCK_DGRAM 為udp流 udpSe Android手機客戶端通過JSP實現與Tomcat伺服器端通訊(Msql資料庫,Json作為載體)--服務端程式碼伺服器端主要程式碼: 1.首先構建一個Person類,用來儲存使用者資訊 public class Person private String name; private String address; private Integer age; public P WebSocket安卓客戶端實現詳解(一)–連接建立與重連ask 應該 header oid mha 主動推送 未收到 compile tde http://blog.csdn.net/zly921112/article/details/72973054 前言 這裏特別說明下因為WebSocket服務端是公司線上項目所以這裏ur Python全棧__服務器與多客戶端通信、UDP協議、pycharm打印帶顏色輸出、時間同步的機制enc bre list print bsp sock pan lis acc 1、服務器與多客戶端通信 1 import socket 2 # 創建tcp socket的套接字 3 sk = socket.socket() 4 # bind 5 WebSocket安卓客戶端實現詳解(一)--連線建立與重連前言 這裡特別說明下因為WebSocket服務端是公司線上專案所以這裡url和具體協議我全部抹去了,但我會盡力給大家講明白並且demo我都是測試過,還望各位看官見諒 我們先粗獷的講下流程,掌握個大概的方向,然後在深入講解細節的實現.這裡先解答一個疑惑,為啥我們這要用WebSocket而不 Linux下網路socket程式設計——實現伺服器(select)與多個客戶端通訊Linux下網路socket程式設計——實現伺服器(select)與多個客戶端通訊 置頂 2017年06月23日 14:44:37 閱讀數:3225 標籤: socket程式設計伺服器與多個客戶端通epoll多路複用C語言網路程式設計 更多 C++ 簡單的 Tcp 實現 socket 客戶端與客戶端通訊分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!   python 學習筆記_2 模擬socket程式設計 服務端、客戶端通訊(參考核心程式設計2程式碼實現)伺服器端程式碼實現: #!/usr/bin/env python#coding=gbk'''接收客戶端字串,在欄位串前面打上當前時間,然後返回server端採用 python2 linux下除錯執行客戶端採用python3 windows下除錯執行(注意編碼格式)''' from socket impor TCP實現伺服器端與客戶端通訊TCP實現伺服器端接收客戶端傳送過來的訊息。 伺服器端: import java.io.IOException; import java.io.InputStream; import java.net.ServerSocket; import java.net.Socket; p C#伺服器端與客戶端通訊(客戶端)客戶端登陸介面 先定義三個視窗級變數(全域性變數) private TcpClient client; private NetworkStream stream; private java socket伺服器與安卓多客戶端通訊首先我們建立服務端, public class Main { public static void main(String[] args){ //啟動socket服務 try{ final ServerSo java多執行緒通訊(伺服器與多客戶端)基於TCP的多執行緒通訊 伺服器執行緒: package com.netproject1; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOExc WebSocket在服務端和客戶端通訊demo,支援心跳檢測+斷線重連一、為什麼需要 WebSocket? 初次接觸 WebSocket 的人,都會問同樣的問題:我們已經有了 HTTP 協議,為什麼還需要另一個協議?它能帶來什麼好處? 答案很簡單,因為 HTTP 協議有一個缺陷:通訊只能由客戶端發起。 舉例來說,我們想了解今天的天氣,只能是客戶端向伺服器發出 mosquitto1.4 websocket js客戶端測試首先先上個效果圖: 埠跟地址自己修改,可以在config.js裡面配置後再html裡面去呼叫。 html的程式碼: <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE htm 應用java多執行緒實現伺服器端與多客戶端之間的通訊package test.concurrent.socket; import java.io.*; import java.net.Socket; /** * Created by dong on 15-6-22. * 伺服器端執行緒處理類 */ public class ServerThread |