天天看點

flask websocket json_BeetleX之Websocket控制器調用

        元件的Webapi控制器不但可以被Http調用,同時也支援Websocket調用。是以服務啟動後相關的Webapi控制器是采用那種方式調用則取決于用戶端使用那種方式。

啟動服務

        首先需要引用BeetleX.FastHttpApi元件,引用後即可定義相關服務.

static void Main(string[] args){    HttpApiServer server = new HttpApiServer();    server.Options.SetDebug();    server.Register(typeof(Program).Assembly);    server.Options.Port = 80;    server.Options.LogLevel = EventArgs.LogType.Info;    server.Options.LogToConsole = true;    server.Open();    System.Threading.Thread.Sleep(-1);}
           

由于控制器是元件内置功能,是以無須再定義WebSocketReceive事件來接管相關處理。

控制器定義

        元件定義控制器非常簡單,詳細可以檢視元件的Webapi控制器定義.

[Controller]public class Home{    public string Hello(string name)    {        return $"Hello {name} {DateTime.Now}";    }}
           

以上定義一個Hello方法,通路路徑/hello.

Web調用

        為了友善調需要引用axios.js和beetlex4axios.js兩個腳本檔案,通過beetlex4axios可以支援http和websocket通路控制器。

<div id="app">        <div>            Name:            <input type="text" v-model="name" />            <button @click="doSend">發送button>        div>        <div>            <p v-for="item in items">{{item}}p>        div>    div>    <script>        var page = new Vue({            el: '#app',            data: {                hello: new beetlexAction('/hello'),                items: [],                name: '',            },            methods: {                doSend() {                    this.hello.asyncpost({ name: this.name }).then(r => {                        this.items.push(r);                    });                },            }                   });script>
           

beetlex4axios.js通過beetlexAction對象定義一個控制器通路對象,方法提供asyncpost和asyncget方法,在調用時候依據控制器參數配置即可。針對websocket方法來說asyncpost和asyncget是沒有差別的。

flask websocket json_BeetleX之Websocket控制器調用

由于beetlex4axios.js預設是沒有開啟websocket的,是以測試請求是http.接下來啟用一直websocket.

<div id="app">        <div>            Name:            <input type="text" v-model="name" />            <button @click="doSend">發送button>        div>        <div>            <p v-for="item in items">{{item}}p>        div>    div>    <script>        var page = new Vue({            el: '#app',            data: {                hello: new beetlexAction('/hello'),                items: [],                name: '',            },            methods: {                doSend() {                    this.hello.asyncpost({ name: this.name }).then(r => {                        this.items.push(r);                    });                },            },            mounted() {                beetlex.useWebsocket();            }                     });script>
           

通過調用beetlex.useWebsocket();方法來開啟Websocket,開啟後調用就即是Websocket通路。

flask websocket json_BeetleX之Websocket控制器調用

開啟後就可以在浏覽器查詢對應的Weboskcet message資訊,通過這些資訊相信能了解到控制調用的資料是怎樣打包的,隻要通過websocket的基礎對象打包對應的請求json資料也可以實作控制器調用。

下載下傳示例 

連結:

https://pan.baidu.com/s/1_5qaOq4U3CwLI3wLvDkltQ

提取碼:

br20 

【BeetleX通訊架構代碼詳解】

【WebApi示例擴充】

BeetleX

開源跨平台通訊架構(支援TLS)

輕松實作高性能:tcp、http、websocket、redis、rpc和網關等服務應用

https://beetlex.io

flask websocket json_BeetleX之Websocket控制器調用

如果你想了解某方面的知識或文章可以把想法發送到

[email protected]|[email protected]