• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    .net core使用FastHttpApi構建web聊天室實例代碼

    來源:懂視網 責編:小采 時間:2020-11-27 22:34:45
    文檔

    .net core使用FastHttpApi構建web聊天室實例代碼

    .net core使用FastHttpApi構建web聊天室實例代碼:前言 一般在dotnet core下構建使用web服務應用都使用asp.net core,但通過FastHttpApi組建也可以方便地構建web服務應用,在FastHttpApi功能的支持下構建多人聊天室是件非常簡單的事情,通過組件并不需要了解WebSocket知識即可簡單構建,以下講解一下
    推薦度:
    導讀.net core使用FastHttpApi構建web聊天室實例代碼:前言 一般在dotnet core下構建使用web服務應用都使用asp.net core,但通過FastHttpApi組建也可以方便地構建web服務應用,在FastHttpApi功能的支持下構建多人聊天室是件非常簡單的事情,通過組件并不需要了解WebSocket知識即可簡單構建,以下講解一下

    前言

    一般在dotnet core下構建使用web服務應用都使用asp.net core,但通過FastHttpApi組建也可以方便地構建web服務應用,在FastHttpApi功能的支持下構建多人聊天室是件非常簡單的事情,通過組件并不需要了解WebSocket知識即可簡單構建,以下講解一下通過FastHttpApi如何構建一個簡單的多人聊室。

    創建項目

    使用FastHttpApi構建一個WEB服務只需要創建一個普通ConsoleApp( 控制臺應用)

    創建項目后需要在Nuget中添加引用FastHttpApi

    只需要簡單地引用Beetlex.FastHttpApi即可構建基于Http和Websocket通訊應用。

    創建邏輯

    FastHttpApi對類和方法沒有太多規則約束,只需要在類上定義一個Controller標簽即可,接下來實現一個簡單的web聊天室

    [Controller]
     public class Controller
     {
     //用戶登陸
     public bool Login(string nickName, IHttpContext context)
     {
     context.Session.Name = nickName;
     ActionResult result = new ActionResult();
     result.Data = new { name = nickName, message = "login", type = "login", time = DateTime.Now.ToString("T") };
     context.SendToWebSocket(result);
     return true;
     }
     //獲取在線用戶
     public object ListOnlines(IHttpContext context)
     {
     return from r in context.Server.GetWebSockets()
     where r.Session.Name != null
     select new { r.Session.Name, IP = r.Session.RemoteEndPoint.ToString() };
     }
    
     //發送聊天信息
     public bool Talk(string nickName, string message, IHttpContext context)
     {
     ActionResult result = new ActionResult();
     result.Data = new { name = nickName, message, type = "talk", time = DateTime.Now.ToString("T") };
     context.SendToWebSocket(result);
     return true;
     }
     }

    以上代碼分別定義登陸,獲取在線用戶和alk方法,方法的定義同樣也是沒有約束性,對于IHttpContext這些參數都是根據自己需要定義,如果不需要則不用在方法中定義它。接下來的事情就是要在頁面上調用它,大家知道在頁面調用http或websocket 需要定義一些代碼和指定相應的URL。但Beetlex.FastHttpApi提供一個非常便利的方式,通過安裝一個插件可以自動生成這些代碼插件安裝介紹(暫只支持vs2017).當插件安裝完成后只需要設置類文件的自定義工具即可

    插件會在當前類文下生成一個js文件,文件里把調用方法的URL和參數都定義完成

    var $Login$url='/login';
    function $Login(nickName,useHttp)
    {
     return api($Login$url,{nickName:nickName},useHttp).sync();
    }
    function $Login$async(nickName,useHttp)
    {
     return api($Login$url,{nickName:nickName},useHttp);
    }
    var $ListOnlines$url='/listonlines';
    function $ListOnlines(useHttp)
    {
     return api($ListOnlines$url,{},useHttp).sync();
    }
    function $ListOnlines$async(useHttp)
    {
     return api($ListOnlines$url,{},useHttp);
    }
    var $Talk$url='/talk';
    function $Talk(nickName,message,useHttp)
    {
     return api($Talk$url,{nickName:nickName,message:message},useHttp).sync();
    }
    function $Talk$async(nickName,message,useHttp)
    {
     return api($Talk$url,{nickName:nickName,message:message},useHttp);
    }

    這個文件非常簡單,主要包括URL,同步方法和異步方法。這個js文件需要依賴FastHttpApi.js才能使用,所以在頁面上必須把這個文件也引用上。接下來就是頁面腳本的使用

    <script>
     function receive(result) {
     if (result.Data.type == 'login' || result.Data.type == 'quit') {
     $ListOnlines$async().execute(function (result) {
     listUserControl.Data = result.Data;
     });
     }
     messages.push(result.Data);
     var objDiv = document.getElementById("lstTalk");
     objDiv.scrollTop = objDiv.scrollHeight;
     }
    
     async function sendMessage() {
     var msg = $('#talkMsg').val();
     if (!msg) {
     alert("enter message");
     return;
     }
    
     var result = await $Talk(nickName, msg);
     if (result.Code != 200)
     alert(result.Error);
     else
     $('#talkMsg').val('');
    
     }
     async function login() {
     nickName = $('#userName').val();
     if (!nickName) {
     alert("enter you name!")
     return;
     }
     var result = await $Login(nickName);
     if (result.Code == 200) {
     $('#loginBar').hide();
     $('#talkBar').show();
     }
     else {
     alert(result.Error);
     }
     }
     </script>

    引用腳本后,直接通過方法調用即可,這種明確的方法調用比傳統的jquery.post有著調用的明確性和便利性,讓使用者不需要查看接口文檔即可以知道方法的調用參數。如果控制器定了XML幫助注釋,插件同樣也會把注釋生成到腳本中。

    靜態文件存儲

    組件通過固定的目錄來存放靜太資源,因此項目需要創建一個views目錄來存儲靜態資源,views目錄是web服務的根目錄。

    由于靜態文件默認情況是不會被編譯處理,所以我們需要把文件設置成編譯嵌入模式或復制到輸出目錄中。如果是復制到輸出目錄下,可以在項目生成事件中添加一段。

    啟動服務

    組件啟動服務很簡單,不過在啟動前需要注冊一下程序集,把控制器注冊到HTTP服務中。

    static void Main(string[] args)
     {
     mApiServer = new BeetleX.FastHttpApi.HttpApiServer();
     mApiServer.Debug();//只有在Debug模式下生產,把靜態資源加載目錄指向項目的views目錄
     mApiServer.Register(typeof(Program).Assembly);//加載程序集中所有控制器信息和靜態資源信息
     mApiServer.Open();
     Console.Write(mApiServer.BaseServer);
     Console.Read();
     }

    組件默認是不需要配置即可啟動HTTP服務,默認端口是9090.不過這些信息也是可以通過配置文件加載,只要程序目錄存在HttpConfig.json文件組件即會加載配置文件中的配置信息來運行服務。

    服務配置文件

    組件提供HttpConfig.json作為組件基礎服務項設置,這個文件不是必須,只要目錄下存在這個文件組件就會在初始化服務的時候加載這個文件的信息作為設置信息。以下大概的講解一下這個配置文件的配置項。

    {
    "HttpConfig": {
    "Host": "",
    "Port": 9090,
    "SSL": false,
    "CertificateFile": "",
    "CertificatePassword": "",
    "MaxBodyLength": 2097152,
    "OutputStackTrace": false,
    "StaticResurceType": "xml;svg;woff;woff2;jpg;jpeg;gif;png;js;html;htm;css;txt;ico;zip;rar",
    "DefaultPage": "index.html;index.htm",
    "NotLoadFolder": "\\Files;\\Images;\\Data",
    "Manager": "admin",
    "ManagerPWD": "123456",
    "NoGzipFiles": "jpg;jpeg;png;gif;png;ico;zip;rar;bmp",
    "CacheFiles": "html;htm;js;css",
    "BufferSize": 1024,
    "WebSocketMaxRPS": 1000,
    "WriteLog": true,
    "LogToConsole": true,
    "LogLevel": "Warring",
    "FileManager": false
    }
    }

    Host

    服務監聽的IP地址,暫只支持any或一個ip

    Port

    服務監聽的端口

    SSL
    是否開啟SSL功能,如果需要開啟必須指定證書和加載證書的密碼;啟動后即可對服務進行Https訪問

    CertificateFile

    證書文件

    CertificatePassword

    證書密碼

    MaxBodyLength

    Http體最大消息長度,默認是2M

    OutputStackTrace

    當服務錯誤的時候是否輸出詳細錯誤代碼信息

    StaticResurceType

    支持的靜態資源類型,如果這里沒有描述的文件類型訪問會返回403

    DefaultPage

    訪問根路徑的情況,默認尋找的文件

    Manager

    后臺管理員的用戶名

    ManagerPWD

    后臺管理員的密碼

    WriteLog

    是否打開日志寫文件

    LogLevel

    輸出日志級別,主要有以下幾種級別:Debug,None,Info,Warring,Error

    這樣一個簡單多人web聊天室就完成,運行效果如下:

    在線演示

    詳細代碼

    總結

    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    .net core使用FastHttpApi構建web聊天室實例代碼

    .net core使用FastHttpApi構建web聊天室實例代碼:前言 一般在dotnet core下構建使用web服務應用都使用asp.net core,但通過FastHttpApi組建也可以方便地構建web服務應用,在FastHttpApi功能的支持下構建多人聊天室是件非常簡單的事情,通過組件并不需要了解WebSocket知識即可簡單構建,以下講解一下
    推薦度:
    標簽: 聊天室 API net
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 亚洲精品国产精品乱码不卡√| 久久夜色精品国产欧美乱| 精品无码国产污污污免费网站国产| 精品久久久久久久久久中文字幕 | 久久精品国内一区二区三区| 成人国产精品一区二区视频| 在线精品自拍无码| 国产成人AV无码精品| 亚洲色精品aⅴ一区区三区| 丁香色婷婷国产精品视频| 亚洲午夜精品久久久久久app| 久久99国产精品久久久 | 国产成人亚洲综合无码精品| 国产原创精品 正在播放| 久久精品亚洲中文字幕无码麻豆| 精品国产免费一区二区三区| 精品免费久久久久久久| 欧美成人精品欧美一级乱黄一区二区精品在线 | 亚洲永久永久永久永久永久精品| 亚洲国产精品自产在线播放| 99热成人精品热久久669| 一本久久a久久精品综合香蕉| 亚洲精品小视频| 国产成人精品电影在线观看 | 2022国内精品免费福利视频 | 久久精品国产只有精品66| 国精品午夜福利视频不卡麻豆| 日韩福利视频精品专区| 精品国产美女福利到在线不卡| 亚洲av永久无码精品网站| 国产精品99| 91精品国产91久久| 国内精品久久久久伊人av| 无码人妻精品中文字幕| 久久精品国产精品亚洲下载| 国产vA免费精品高清在线观看| 国产精品高清一区二区三区| 欧美jizzhd精品欧美| 欧美激情精品久久久久久| 精品国产婷婷久久久| 欧美精品国产日韩综合在线|