Rmessage
1.0.0
Rmessage は、Reactor3 を使用して、reactor-netty プロジェクト上に構築されたリアルタイム メッセージ プッシュ API です。
Reactor3とは何ですか?
Reactor は、効率的な需要管理 (つまり、「バックプレッシャー」の制御) 機能を備えた、JVM 用の完全にノンブロッキングなリアクティブ プログラミング フレームワークです。 CompletableFuture、Stream、Duration などの Java 8 関数 API と直接統合されます。これは、非同期シーケンス API Flux ([N] 要素用) および Mono ([0|1] 要素用) を提供し、「Reactive Extensions 仕様」に完全に従って実装します。
Reactor を使用する利点は何ですか?
高スループットの純粋な非同期コードを構築するのは非常に簡単で、spring5 [webflux] プロジェクトをシームレスに統合できます。
Rmessage を使用するには、グループ ユーザー関係を外部で管理する必要があります。Rmessage は、オフライン メッセージを保持するためにデフォルトのハンドラー メモリを使用できません。 プロジェクト全体は純粋に非同期プログラミングのアイデアを使用して開発されており、リアクティブ プログラミングを学ぶことを目的としています。
ServerStart
. builder ()
. tcp ()
. ip ( "127.0.0.1" )
. port ( 1888 )
. onReadIdle ( 10000l ) //设置读心跳时间
. onWriteIdle ( 10000l ) //设置写心跳时间
. option ( ChannelOption . SO_RCVBUF , 1023 )
. interceptor ( frame -> frame , frame -> frame ) // 拦截所有message
. setAfterChannelInit ( channel -> { // channel设置
})
. connect ()
. cast ( TcpServerSession . class )
. subscribe ( session ->{
session . addGroupHandler ( groupId -> null ). subscribe ();
session . addOfflineHandler ( new DefaultOffMessageHandler ()). subscribe ();
session . addUserHandler ( new DefaultUserTransportHandler ());
});
ClientStart
. builder ()
. tcp ()
. ip ( "127.0.0.1" )
. port ( 1888 )
. userId ( "21344" ) //设置用户名
. password ( "12312" ) //设置密码
. onReadIdle ( 10000l ,()->()-> System . out . println ( "心跳了" )) //设置读心跳,以及设置回调runner
. setClientType ( ClientType . Ios ) //设置客户端类型
. setAfterChannelInit ( channel -> {
// channel设置
})
. connect ()
. cast ( TcpClientSession . class )
. subscribe ( session ->{
session . sendPoint ( "123" , "测试一下哦" ). subscribe (); //发送单聊消息
session . sendGroup ( "group1" , "123" ). subscribe (); // 发送群聊消息
session . accept ( message -> {
}); // 接受所有消息
});
FixHeader【1バイト】
クライアントの種類 | メッセージの種類 |
---|---|
上位4ビット | 下位4ビット |
トピック【nバイト】
長さから | 長さまで | から | に |
---|---|---|---|
1バイト | 1バイト | nバイト | nバイト |
本文 [n バイト]
体長 | 体 |
---|---|
2バイト | nバイト |
タイムスタンプ |
---|
8バイト |
FixHeader【1バイト】
クライアントの種類 | メッセージの種類 |
---|---|
上位4ビット | 下位4ビット |
接続状態 [n バイト]
ユーザーの長さ | パスワードの長さ | ユーザー | パスワード |
---|---|---|---|
1バイト | 1バイト | nバイト | nバイト |
FixHeader【1バイト】
クライアントの種類 | メッセージの種類 |
---|---|
上位4ビット | 下位4ビット |
接続状態 [n バイト]
ユーザーの長さ | ユーザー |
---|---|
1バイト | nバイト |
FixHeader【1バイト】
クライアントの種類 | メッセージの種類 |
---|---|
上位4ビット | 下位4ビット |