序文
今日の主なコンテンツは、レイイムメッセージの写真、ファイルアップロードとドッキング、ユーザーステータス監視、およびグループオンラインユーザーの監視です。以下に1つずつ紹介します。
画像アップロード
Spring Bootのファイルアップロードに関する多くのブログがあり、コードの一部も抜粋しました。アップロードパーツが簡単に導入され、主に開発プロセス中に発生した問題を導入します。まず、対応するlayimのインターフェイスを見てみましょう。
layim.config({// Upload Image Interface、uploadImage:{url: '/upload/file'} // file interface、uploadfile:{url: '/upload/file'} //その他のコード}))はい、そうです、2つのインターフェイスを書くことで、写真を送信してLayimでファイルを送信する機能を実装できます。ここで問題を救います。 Layimはファイルタイプを審査しているため、ここでは1つのアップロードインターフェイスのみを使用します。返された形式は次のとおりです。
{"code":0、 "msg": "success"、 "data":{"src": "/upload/d8740baa-cf7e-497c-a085-5c6ed9633f35.gif"、 "name": "8.gif"}}}コードのアップロードは非常に簡単です。ファイルの接尾辞を取得し、GUID名を生成し、対応するフォルダーに保存します。最後に、Layimが望む応答データを返します。
最初は、/resources/static/upload/folderに直接渡すことを考えました。その後、アップロードが成功した後、アクセスパスには404の状況があることがわかりました。その理由は、フォルダーにそのファイルがあるが、ターゲットフォルダーがない場合でも、再コンパイルと実行のみを実行できるため、これは間違いなく機能しません。だから私は解決策を探しました。その後、それを処理する方法を見ました。これは、各ファイル要求をコントローラーのパスにマップし、ResourceLoaderを使用して応答ファイルを見つけます。コードは次のとおりです。
/ ***ファイルをアップロードするためのパス構成プライベートファイナルリソースリソースResourceLeceloAder; @autowired public uploadcontroller(resourceLeder resourceLeceloader){this.resourceloader = resourceLoader; }ファイルコードを取得し、そのファイルにアクセスするときにファイル名を指定すると、リソースはパスに応じて対応するリソースを返します。
/***ファイルパスにアクセスし、resourceLoaderを使用してファイルを取得しますリソースリソース= ResourceLeCelAder.getResource(場所); RESPONSENTETITY.ok(リソース)を返します。 } catch(Exception e){return responseNtity.notfound()。build(); }}効果を見てみましょう。(すべての人にデモンストレーションスクリーンショットを作成するときにファイルサイズの制限をアップロードする問題に遭遇するために、構成を変更するだけです。)
HTTP:MultiPart:Max-File-Size:30MB Max-Request-Size:30MB
上記のコード値は次のように構成されています:filename:。+、そのため、 /abc.jpgのようなメソッドが発生した場合、getFileメソッドと一致します。その後、ResourceLoaderはファイルを見つけるのに役立ちます。しかし、もっと学ぶために、ソースコードに従いました。まず、DefaultroSourceloaderのGetResourceメソッドを見てみましょう。
@overridepublic resource getResource(string location){assert.notnull(location、 "location be null"); (location.startswith( "/")){return getResourceBypath(location);} //これは、classpathに行くかどうかを決定するためです。ファイルアドレスをURLに変換しますその後、デバッグプロセス中に、たとえば、アクセスしたパスは/abc.gifであることがわかりました。その背景はこのアドレスに変換されることがわかりました。そのため、このアドレスをマシンに直接開くことでアクセスすることもできます。上記のアドレス(file:///)は、 layout.upload.dirの値です。同様に、Resource/Static/Upload/にフォルダを変更しました。なぜなら、ResourceLeceloAderを介してファイルをサーバーの物理アドレスに配置するからです。
ターゲットの下にuplaodフォルダーさえありませんが、ファイルにアクセスできます
ファイルアップロード
写真と同じインターフェイスを使用します。違いは、大きなファイルをアップロードするには構成を変更する必要があることです。上記で書かれており、ここでは詳しく説明しません。
ユーザーオンラインステータス
Layimのステータス監視には、これがあります。
//モニターの切り替えはlayim.on( 'chatchange'、function(res){console.log(res.data);});実際、リストを読むとき、ユーザーはオフラインでロードする必要があります。ただし、ここにデモンストレーションがあります。ウィンドウが切り替わるとき、反対側のステータスを確認します。したがって、チャチャンジイベントがトリガーされた後、サーバーにリクエストを送信します。
var t = res.data.type == 'friend'; socket.send({mtype:t?socket.mtype.checkisonline:socket.mtype.checkonlinecount、id:res.data.id});上に2つの状況があります。一人でチャットするときは、相手のステータスを知る必要があります。 2番目のタイプは、グループチャット中に、オンラインで何人の人がいるかを知りたいということです。だから私は少し違いをもたらしました。
2つの新しいメッセージ処理クラスを追加します。
実際、オンラインであるかどうかを判断するためのコードは次のとおりです。
ChannelContext CheckChannelContext = aio.getChannelContextByUserid(ChannelContext.getGroupContext()、body.getId()); //オンラインブールisonline = checkchannelcontext!= null &&!checkchannelcontext.isclosed();
次に、メッセージをサーバーに戻します。メッセージプロセスは、シングルチャットグループチャットの実装で導入されているため、ここでは詳しく説明しません。
以下は、グループに何人の人がいるかを判断する方法です。
setWithLock <ChannelContext> channellocks = aio.getChannelContextsbyGroup(ChannelContext.getGroupContext()、body.getId()); int onlinecount = channellocks.getobj()。size();
効果を見てください。データ量は少し小さく、2人のユーザーのみですが、デモにはまだ十分です。
別のアカウントでログインした後:
要約します
この記事は多くのコンテンツではなく、TIOの個々のAPIのファイルと簡単なアプリケーションをアップロードするだけです。しかし、私を興奮させるのは、コードをデバッグするとき、このようなプレイ可能なものをたくさん見つけたことです。
もちろん、著者はすでにフレームワークの紹介でそれを導入しており、各クライアントから送信されたメッセージを統計やその他のものとして聞くことができます。したがって、次のステップは、このデータを使用して何かをすることです。
最後に、残りはいくつかの単純なメッセージ履歴、メッセージ保存、友人のアプリケーション、および追加、削除、変更、およびチェックされるその他のものであるため、将来はあまり紹介しません。プロジェクトが正式に書かれた後に投稿を投稿します。次に、私はT-IO ~~でデータを使用します(待って、あなたは迷いましたか?私は元々スプリングブートを学んでいました...)
コードアドレス:https://github.com/fanpan26/springbootlayim
要約します
上記は、編集者が紹介したファイルアップロードおよび監視ユーザーステータスを実装するためのSpring Boot + Layim + T-IOの例です。それがあなたに役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!