日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

服务器响应回调函数,解决有关flask-socketio中服务端和客户端回调函数callback参数的问题(全网最全)...

發(fā)布時(shí)間:2024/10/8 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 服务器响应回调函数,解决有关flask-socketio中服务端和客户端回调函数callback参数的问题(全网最全)... 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

由于工作當(dāng)中需要用的flask_socketio,所以自己學(xué)習(xí)了一下如何使用,查閱了有關(guān)文檔,當(dāng)看到回調(diào)函數(shù)callback的時(shí)候,發(fā)現(xiàn)文檔里都描述的不太清楚,最后終于琢磨出來了,分享給有需要的朋友

首先看看官方文檔及其譯文

看到這里以后,我就開始照著文檔敲代碼,發(fā)現(xiàn)即使我按照文檔里的寫法寫了,也沒有調(diào)用我們的回調(diào)函數(shù)ack

廢話不多說,直接上最終版代碼

index.html

index1

$(document).ready(function () {

var socket = io.connect('http://127.0.0.1:8000/');

socket.on('connect', function () {

socket.emit('connect_event', {data: 'client,connected!'}); //客戶端向服務(wù)端發(fā)起請(qǐng)求鏈接

});

socket.on('server_response', function (msg, ack) {

$('#log').append('
' + $('

ack('client received'); //響應(yīng)服務(wù)端的回調(diào)函數(shù),告知服務(wù)端,客戶端已收到消息

});

socket.on('server_response1', function (msg) {

$('#log').append('
' + $('

// ack('msg'); //響應(yīng)服務(wù)端的回調(diào)函數(shù),告知服務(wù)端,客戶端已收到消息

});

$('#aa').click(function (event) {

socket.emit('client_event', {data: $('#emit_data').val()}, function (data) {

console.log("server received data", data); // 此處data為服務(wù)端發(fā)送過來的回調(diào)參數(shù),說明服務(wù)端已收到客戶端的消息;

});

});

});

WebSokect

socket1.py

# -*- coding: utf-8 -*-

from flask import Flask, render_template

from flask_socketio import SocketIO, emit

app = Flask(__name__, template_folder='./')

socketio = SocketIO()

socketio.init_app(app)

def ack(data): # 服務(wù)端回調(diào)函數(shù)

print u'客戶端已收到消息,回調(diào)參數(shù)為',data # 服務(wù)端回調(diào)函數(shù)的參數(shù)

@app.route('/')

def index():

return render_template('index.html')

@socketio.on('client_event')

def client_msg(msg):

print msg

emit('server_response', {'data': msg['data']}, callback=ack) # 指定服務(wù)端回調(diào)函數(shù)為ack,參數(shù)由客戶端指定

return 'server received data!' # 客戶端回調(diào)函數(shù)的參數(shù)

@socketio.on('connect_event')

def connected_msg(msg):

print u'客戶端建立請(qǐng)求,信息為:',msg['data']

emit('server_response1', {'data': msg['data']})

if __name__ == '__main__':

socketio.run(app, debug=True, host='0.0.0.0', port=8000)

其實(shí),我想說的已經(jīng)全部放在了注釋里了,

總結(jié)一下,在測(cè)試中遇到的問題吧

服務(wù)端:在emit中,指定callback,

客戶端:在socket.on的function里,有兩個(gè)參數(shù)

第一個(gè)參數(shù),是用來接收服務(wù)端return

如果我們只寫一個(gè)就是監(jiān)聽server_response里的信息,這個(gè)參數(shù)msg就代表收到的信息

當(dāng)我們指定了第二個(gè)參數(shù)時(shí)(可以不和服務(wù)端的回調(diào)函數(shù)ack同名),這個(gè)參數(shù)就是

on用來監(jiān)聽對(duì)應(yīng)通道,emit向?qū)?yīng)通道發(fā)送消息

socket.on中,第一個(gè)參數(shù)為通道的名字,第二個(gè)參數(shù)為一個(gè)函數(shù)function

function中,可以有兩個(gè)參數(shù),第一個(gè)參數(shù)是用來接收服務(wù)端return的值,第二個(gè)參數(shù)是回調(diào)函數(shù)名(隨便取)

如果服務(wù)端在emit中指定了callback,就比如上圖,如果希望客戶端收到消息后給服務(wù)端回傳一個(gè)消息,觸發(fā)服務(wù)端的callback即ack函數(shù),則這第二個(gè)參數(shù)必須指定,否則不會(huì)觸發(fā)

如果在服務(wù)端沒有指定callback,但是在客戶端指定了第二個(gè)參數(shù),則在頁面上會(huì)報(bào)錯(cuò),如下圖

必須對(duì)應(yīng)好,才不會(huì)出錯(cuò)

使用flask_socketio實(shí)現(xiàn)服務(wù)端向客戶端定時(shí)推送

websocket連接是客戶端與服務(wù)器之間永久的雙向通信通道,直到某方斷開連接. 雙向通道意味著在連接時(shí),服務(wù)端隨時(shí)可以發(fā)送消息給客戶端,反之亦然,這在一些需要即時(shí)通訊的場(chǎng)景比如多人聊天室非常重要. ...

app開發(fā)中如何利用sessionId來實(shí)現(xiàn)服務(wù)端與客戶端保持回話

app開發(fā)中如何利用sessionId來實(shí)現(xiàn)服務(wù)端與客戶端保持回話 這個(gè)問題太過于常見,也過于簡(jiǎn)單,以至于大部分開發(fā)者根本沒有關(guān)注過這個(gè)問題,我根據(jù)和我溝通的開發(fā)者中,總結(jié)出來常用的方法有以下幾種: ...

(轉(zhuǎn))客戶端觸發(fā)Asp.net中服務(wù)端控件事件

第一章.?Asp.net中服務(wù)端控件事件是如何觸發(fā)的 Asp.net 中在客戶端觸發(fā)服務(wù)端事件分為兩種情況: 一. WebControls中的Button 和HtmlControls中的Type為su ...

(轉(zhuǎn))SVN 服務(wù)端、客戶端安裝及配置、導(dǎo)入導(dǎo)出項(xiàng)目

SVN服務(wù)器搭建和使用(一) Subversion是優(yōu)秀的版本控制工具,其具體的的優(yōu)點(diǎn)和詳細(xì)介紹,這里就不再多說. 首先來下載和搭建SVN服務(wù)器. 現(xiàn)在Subversion已經(jīng)遷移到apache網(wǎng)站上 ...

【轉(zhuǎn)】TCP/UDP簡(jiǎn)易通信框架源碼,支持輕松管理多個(gè)TCP服務(wù)端(客戶端)、UDP客戶端

[轉(zhuǎn)]TCP/UDP簡(jiǎn)易通信框架源碼,支持輕松管理多個(gè)TCP服務(wù)端(客戶端).UDP客戶端 目錄 說明 TCP/UDP通信主要結(jié)構(gòu) 管理多個(gè)Socket的解決方案 框架中TCP部分的使用 框架中UDP ...

openssl實(shí)現(xiàn)雙向認(rèn)證教程(服務(wù)端代碼+客戶端代碼+證書生成)

一.背景說明 1.1 面臨問題 最近一份產(chǎn)品檢測(cè)報(bào)告建議使用基于pki的認(rèn)證方式,由于產(chǎn)品已實(shí)現(xiàn)https,商量之下認(rèn)為其意思是使用雙向認(rèn)證以處理中間人形式攻擊. 中接觸過 ...

oauth2.0服務(wù)端與客戶端搭建

oauth2.0服務(wù)端與客戶端搭建 - 推酷 今天搭建了oauth2.0服務(wù)端與客戶端.把搭建的過程記錄一下.具體實(shí)現(xiàn)的功能是:client.ruanwenwu.cn的用戶能夠通過 server.ru ...

vertx 從Tcp服務(wù)端和客戶端開始翻譯

寫TCP 服務(wù)器和客戶端 vert.x能夠使你很容易寫出非阻塞的TCP客戶端和服務(wù)器 創(chuàng)建一個(gè)TCP服務(wù) 最簡(jiǎn)單的創(chuàng)建TCP服務(wù)的方法是使用默認(rèn)的配置:如下 NetServer server = ve ...

隨機(jī)推薦

使用批處理(bat)腳本對(duì)目錄樹下同種性質(zhì)的目錄或文件進(jìn)行處理

問題起源:每次從svn管理的目錄下面復(fù)制目錄之后里面總是有很多.svn的目錄,雖說不影響使用但看著很礙眼.同時(shí)自己也懶得使用svn的export功能. 因此一個(gè)簡(jiǎn)單的批處理腳本可以幫助我們搞定一切,當(dāng) ...

ds.Merge 與 ds.Tables[0].Merge 的用法

DataSet ds = new DataSet(); SqlConnection conn = new SqlConnection(ConnectionStr);??????????? SqlCom ...

javascript 筆記(待續(xù))

1.基礎(chǔ)對(duì)象 ?var o=new Object(); ?o.xxx=1; o.xx=2; ? ?var 01={xxx=1,xx=2} 2.==與=== ? "5"==5 Tru ...

java寫文件時(shí),輸出不完整的原因以及解決方法close()或flush()

在java的IO體系中,寫文件通常會(huì)用到下面語句 BufferedWriter bw=new BufferedWriter(new FileWriter("sql語句.txt")) ...

mint17上建立lamp環(huán)境

使用apt-get方式是最簡(jiǎn)單的也是最快捷穩(wěn)定的在桌面linux環(huán)境下. ? 分別執(zhí)行如下命令: ? (1)安裝MYSQL ? sudo apt-get install mysql-server ? ...

[POJ 1637] Sightseeing tour(網(wǎng)絡(luò)流)

題意 (混合圖的歐拉回路判定) 給你一個(gè)既存在有向邊, 又存在無向邊的圖. 問是否存在歐拉回路. \(N ≤ 200, M ≤ 1000\) 題解 難點(diǎn)在于無向邊. 考慮每個(gè)點(diǎn)的度數(shù)限制. 我們先對(duì)無 ...

python之tkinter使用-復(fù)選框操作

# tkinter復(fù)選框操作 import tkinter as tk root = tk.Tk() root.title('問卷調(diào)查') root.geometry('220x80') # 設(shè)置窗口 ...

【沒有注意過的細(xì)節(jié)】用scanf讀一個(gè)unsigned char? %hhu 的用法

頭段時(shí)間我的代碼,有一個(gè) unsigned char,我需要從sscanf 中讀取字符串為這個(gè)值.但是一般char 是用%c的,我是要值得. 所以我使用了%d %u來讀,結(jié)果報(bào)警告: unsigned ...

python函數(shù)入門

知識(shí)內(nèi)容: 1.函數(shù)的作用 2.函數(shù)的定義與調(diào)用 3.函數(shù)的返回值 4.函數(shù)的參數(shù) 5.局部變量與全局變量 6.作用域 一.函數(shù)的作用 1.復(fù)用代碼 將可能重復(fù)執(zhí)行的代碼封裝成函數(shù),并在需要執(zhí)行的地方 ...

73.Vivado使用誤區(qū)與進(jìn)階——在Vivado中實(shí)現(xiàn)ECO功能

關(guān)于Tcl在Vivado中的應(yīng)用文章從Tcl的基本語法和在Vivado中的應(yīng)用展開,繼上篇介紹了如何擴(kuò)展甚至是定制FPGA設(shè)計(jì)實(shí)現(xiàn)流程后,引出了一個(gè) ...

總結(jié)

以上是生活随笔為你收集整理的服务器响应回调函数,解决有关flask-socketio中服务端和客户端回调函数callback参数的问题(全网最全)...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。