亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

用Java構(gòu)建一個簡單的WebSocket聊天項目之新增HTTP接口調(diào)度

vvpvvp / 3453人閱讀

摘要:前言大家可以看看上一篇用構(gòu)建一個簡單的聊天室在上一篇文章中我們已經(jīng)實現(xiàn)了自我對話好友交流群聊離線消息等的功能。系統(tǒng)通知恭喜您連續(xù)登錄超過天,獎勵積分。

本文首發(fā)公眾號與個人博客:Java貓說 & 貓叔的博客 | MySelf,轉(zhuǎn)載請申明出處。
前言
大家可以看看上一篇:用Java構(gòu)建一個簡單的WebSocket聊天室

在上一篇文章中我們已經(jīng)實現(xiàn)了:自我對話、好友交流、群聊、離線消息等的功能。

而本篇,我們的框架升級了,并且開通了幾個新的HTTP接口功能,同時也把原先框架的一些異常做了處理。

我們將使用更少的代碼完成功能更加完善的聊天項目!

采用框架

我們整個Demo基本不需要大家花費太多時間,就可以實現(xiàn)以下的功能。

用戶token登錄校驗

自我聊天

點對點聊天

群聊

獲取在線用戶數(shù)與用戶標簽列表

發(fā)送系統(tǒng)通知

首先,我們需要介紹一下我們今天打算采用的框架,InChat : 一個輕量級、高效率的支持多端(應用與硬件Iot)的異步網(wǎng)絡應用通訊框架,采用這個框架,我們基本上只需要兩三個類就可以實現(xiàn)我們今天需要的功能了。

先看看效果

需要了解SSM & SpringBoot 嗎?

InChat ,本身不依賴于任何的底層框架,所以大家只要會基本的Java語言就可以實現(xiàn)一套自己的WebSocket聊天室。

框架使用手冊(新版V1.1.2剛剛發(fā)布)

關(guān)于詳細的手冊說明,大家可以看看官網(wǎng)的介紹:

V1.1.2版本使用說明

V1.1.2版本視頻教學


    com.github.UncleCatMySelf
    InChat
    1.1.2
開始Demo搭建 構(gòu)建一個空的Maven項目

我們不需要依賴其他的Maven包,只要本文提及的框架即可。


    com.github.UncleCatMySelf
    InChat
    1.1.2
InChat啟動參數(shù)可以自配置

你只需要繼承InChat的默認配置類InitNetty即可,如下

public class MyInit extends InitNetty {
    /** 自定義啟動監(jiān)聽端口 */
    @Override
    public int getWebport() {
        return 8090;
    }
}
獲取聊天消息數(shù)據(jù)

此接口與原先一樣,僅修改了方法名

public class DataBaseServiceImpl implements InChatToDataBaseService {

    @Override
    public Boolean writeMessage(InChatMessage message) {
        System.out.println(message.toString());
        return true;
    }
}
登錄校驗與群聊消息

此接口沒有做過多的修改

public class VerifyServiceImpl implements InChatVerifyService {

    @Override
    public boolean verifyToken(String token) {
        return true;
    }

    @Override
    public JSONArray getArrayByGroupId(String groupId) {
        JSONArray jsonArray = JSONArray.parseArray("["1111","2222","3333"]");
        return jsonArray;
    }
}
服務端發(fā)送通知消息枚舉類

此接口具有Demo模板,用戶需要繼承InChat框架的FromServerService接口,同時該接口注釋也有實例demo,我們需要實現(xiàn)一個自定義的枚舉,你可以這樣寫:

public enum  FromServerServiceImpl implements FromServerService {

    //你可以自定義自己的系統(tǒng)消息,請以Integer-String的形式
    TYPE1(1,"【系統(tǒng)通知】您的賬號存在異常,請注意安全保密信息。"),
    TYPE2(2,"【系統(tǒng)通知】恭喜您連續(xù)登錄超過5天,獎勵5積分。");

    private Integer code;

    private String message;

    FromServerServiceImpl(Integer code, String message){
        this.code = code;
        this.message = message;
    }

    public Integer getCode() {
        return code;
    }

    //實現(xiàn)接口的方法,遍歷本枚舉的code,獲取對應的消息,作為系統(tǒng)消息發(fā)送
    public String findByCode(Object code) {
        Integer codes = (Integer)code;
        for (FromServerServiceImpl item: FromServerServiceImpl.values()) {
            if (item.code == codes){
                return item.message;
            }
        }
        return null;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }


}
啟動項目

1.1.2版本的啟動項目變得異常的簡單,你只需要配置啟動的配置工廠即可。

public class application {

    public static void main(String[] args) {
        //配置你的自定義配置
        ConfigFactory.initNetty = new MyInit();
        //配置校驗類
        ConfigFactory.inChatVerifyService = new VerifyServiceImpl();
        //配置消息接收處理類
        ConfigFactory.inChatToDataBaseService = new DataBaseServiceImpl();
        //配置服務端系統(tǒng)消息枚舉,這里的值無所謂 TYPE1或者TYPE2或者TYPEN均可以
        ConfigFactory.fromServerService = FromServerServiceImpl.TYPE1;
        //啟動InChat
        InitServer.open();
    }

}
項目效果

啟動成功

DEBUG - -Dio.netty.threadLocalDirectBufferSize: 0
DEBUG - -Dio.netty.maxThreadLocalCharBufferSize: 16384
 INFO - 服務端啟動成功【192.168.56.1:8090】
當聊天連接未注冊情況下,客戶端自動斷開后,服務會自動包對應的異常
 INFO - [Handler:channelInactive]/192.168.56.1:8090關(guān)閉成功
ERROR - [捕獲異常:NotFindLoginChannlException]-[Handler:channelInactive] 關(guān)閉未正常注冊鏈接!
原先的自我發(fā)送,點對點發(fā)送,群聊均與原來一樣

原先的接口說明可以看上一版本: v1.1.0-alpha版本使用說明

新功能添加 HTTP

新增HTTP接口三個,在你啟動Inchat的時候,默認啟動,對于你的其他web API并無任何影響,它是一個IM的輔助作用。本版本不支持用戶自定義相關(guān)的InChat HTTP接口

獲取在線用戶數(shù)

地址:[ip:端口]/get_size GET

返回值

{
    "code": 200,
    "data": {
        "online": 1,//當前在線數(shù)
        "time": "Jan 3, 2019 10:06:45 PM"http://查詢時間
    }
}
獲取在線用戶標識

地址:[ip:端口]/get_list GET

返回值

{
    "code": 200,
    "data": {
        //返回在線用戶列表
        "tokens": [ 
            "1111"
        ]
    }
}
根據(jù)用戶標簽,發(fā)送系統(tǒng)指定消息

地址:[ip:端口]/send_from_server POST

參數(shù):token(你可以從get_list中得到在線用戶標簽)、value(你在系統(tǒng)中添加枚舉的code值,這里不接受字符串)

返回值

{
    "code": 400,
    "data": {
        "message": "通知發(fā)送成功"
    }
}

(有個小BUG,返回值code應該是200)

關(guān)于前端

InChat : 一個輕量級、高效率的支持多端(應用與硬件Iot)的異步網(wǎng)絡應用通訊框架,大家可以直接來這個項目下獲取前端頁面,或者直接訪問這個地址:https://github.com/UncleCatMy...

對于這個前端頁面,我們需要更改一下IP地址。

運行調(diào)試項目

接下來直接啟動后端項目,當我們看到以下的信息,則項目啟動成功。

 INFO - 服務端啟動成功【192.168.1.121:8090】

這里的IP需要更換以下讀者啟動后的IP地址。

接著直接用瀏覽器打開chat.html的頁面即可,關(guān)于js的方法,大家可以看看InChatV1.1.0版本使用說明。

運行效果已經(jīng)提前展示啦!

公眾號:Java貓說
現(xiàn)架構(gòu)設計(碼農(nóng))兼創(chuàng)業(yè)技術(shù)顧問,不羈平庸,熱愛開源,雜談程序人生與不定期干貨。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/72820.html

相關(guān)文章

  • 次世代會話管理項目 Spring Session

    摘要:會話管理一直是企業(yè)級應用的重要部分。傳統(tǒng)會話管理技術(shù)的問題的目的是解決傳統(tǒng)的會話管理技術(shù)的各種問題。對如和之類的閉源產(chǎn)品,找到適合它們的會話管理技術(shù)的替代實現(xiàn)則通常是不可能的。典型的應用會將當前用戶的身份及其安全級別或角色存儲在會話里面。 歡迎大家前往騰訊云+社區(qū),獲取更多騰訊海量技術(shù)實踐干貨哦~ 本文來自云+社區(qū)翻譯社,由Tnecesoc編譯。 會話管理一直是 Java 企業(yè)級應用的...

    不知名網(wǎng)友 評論0 收藏0
  • 兩年了,我寫了這些干貨!

    摘要:開公眾號差不多兩年了,有不少原創(chuàng)教程,當原創(chuàng)越來越多時,大家搜索起來就很不方便,因此做了一個索引幫助大家快速找到需要的文章系列處理登錄請求前后端分離一使用完美處理權(quán)限問題前后端分離二使用完美處理權(quán)限問題前后端分離三中密碼加鹽與中異常統(tǒng)一處理 開公眾號差不多兩年了,有不少原創(chuàng)教程,當原創(chuàng)越來越多時,大家搜索起來就很不方便,因此做了一個索引幫助大家快速找到需要的文章! Spring Boo...

    huayeluoliuhen 評論0 收藏0
  • 學習實踐 - 收藏集 - 掘金

    摘要:官網(wǎng)地址聊天機器人插件開發(fā)實例教程一創(chuàng)建插件在系統(tǒng)技巧使你的更加專業(yè)前端掘金一個幫你提升技巧的收藏集。我會簡單基于的簡潔視頻播放器組件前端掘金使用和實現(xiàn)購物車場景前端掘金本文是上篇文章的序章,一直想有機會再次實踐下。 2道面試題:輸入URL按回車&HTTP2 - 掘金通過幾輪面試,我發(fā)現(xiàn)真正那種問答的技術(shù)面,寫一堆項目真不如去刷技術(shù)文章作用大,因此刷了一段時間的博客和掘金,整理下曾經(jīng)被...

    mikyou 評論0 收藏0
  • Java后端

    摘要:,面向切面編程,中最主要的是用于事務方面的使用。目標達成后還會有去構(gòu)建微服務,希望大家多多支持。原文地址手把手教程優(yōu)雅的應用四手把手實現(xiàn)后端搭建第四期 SpringMVC 干貨系列:從零搭建 SpringMVC+mybatis(四):Spring 兩大核心之 AOP 學習 | 掘金技術(shù)征文 原本地址:SpringMVC 干貨系列:從零搭建 SpringMVC+mybatis(四):Sp...

    joyvw 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<