溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

python和JavaScript通信怎么實(shí)現(xiàn)

發(fā)布時(shí)間:2022-04-29 13:42:32 來源:億速云 閱讀:264 作者:iii 欄目:開發(fā)技術(shù)

本文小編為大家詳細(xì)介紹“python和JavaScript通信怎么實(shí)現(xiàn)”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“python和JavaScript通信怎么實(shí)現(xiàn)”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識(shí)吧。

  • js和python是兩種語言,js處理網(wǎng)頁(yè)數(shù)據(jù),python可作為服務(wù)端開發(fā),兩者通過websocket進(jìn)行通信。

  • websocket是socket的封裝,省去了通信上的HTTP協(xié)議轉(zhuǎn)換上的麻煩.

  • 大中型項(xiàng)目推薦使用torando/Djiango平臺(tái),兩個(gè)平臺(tái)集成度較高,方便開發(fā)使用.

實(shí)驗(yàn)以發(fā)送html頁(yè)面上的圖片到服務(wù)器后端為例子.

服務(wù)端接收?qǐng)D片后,開啟本地端口為10086的服務(wù),等待前端的連接.服務(wù)把前端發(fā)的圖像url存在本地文件car.bmp.

import asyncio
import websockets
import urllib.request
 
async def recv_user_msg(websocket):
    while True:
        url = await websocket.recv()
        urllib.request.urlretrieve(url,'car.bmp')
        await websocket.send('ok')
 
 
async def run(websocket, path):
    while True:
        try:
            await recv_user_msg(websocket)
        except websockets.ConnectionClosed:
            print("ConnectionClosed...", path)        
            break
       
if __name__ == '__main__':
    print("127.0.0.1:10086 websocket...")
    asyncio.get_event_loop().run_until_complete(websockets.serve(run, "127.0.0.1", 10086))
    asyncio.get_event_loop().run_forever()

缺少module直接pip install安裝解決.

pip install websockets
pip install urllib

在頁(yè)面上嵌入img標(biāo)簽,連接服務(wù)端,點(diǎn)擊發(fā)送圖片,圖片發(fā)送至服務(wù)端,并且顯示返回結(jié)果.

 <!DOCTYPE html>
<html lang="en">
 
<head>
    <meta charset="UTF-8">
    <title>測(cè)試Socket——ws://127.0.0.1:10086</title>
    
</head>
<body>
    <img id = 'img' src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1598273151875&di=2823d5f7c3aa5e075bd785572e3e1561&imgtype=0&src=http%3A%2F%2Fimage.9game.cn%2F2019%2F8%2F8%2F90082743.jpg"/>
    <button onclick = "send_img()">發(fā)送圖片</>
<script  type="text/javascript">
        var socket;       
        var ws = new WebSocket("ws://127.0.0.1:10086/test");
        socket = ws;
        ws.onopen = function() {
            console.log('連接成功');
 
        };
 
        ws.onmessage = function(evt) {
            var received_msg = evt.data;
            alert('recv:' + received_msg + ' 發(fā)送完成');
        };
 
        ws.onclose = function() {
            s = '斷開了連接'
            alert(s);
        };
       
        function send_img() {
            image = document.getElementById('img');
            socket.send(image.src);
        }
    </script>
</body>
</html>

讀到這里,這篇“python和JavaScript通信怎么實(shí)現(xiàn)”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI