I.はじめに
プロジェクトは、オンラインチャット機能を実現socket.ioプロジェクト内の注目点についてのテキストレコードを使用する場合1は、最近開発段階の前と後に分離します。
セクションII:オペレーティングsocket.io方式のサービス終了を定義し、フロントエンドユーザーのチャットログを監視
第二に、主要な知識
(1)plug-socket.ioをダウンロードしてインストールします。
NPM私--save socket.io
(2)フォルダをパッケージングする方法ウィジェットsocket.ioう単一演算ノードを発現以下のフレームワークを使用して。
binに接続Socket.io
(3)最初のステップは:socket.ioを使用してサーバーを監視します
socketio.jsサーバーにカプセル化GetSocketioは方法をリッスン:
VaRの socketio = {} VARの socket_io =必要とする('socket.io' ) // 获取IO socketio.getSocketio = 機能(サーバ){ VAR IO = socket_io.listen(サーバ) io.sockets.on('接続'、ソケット= > { にconsole.log('连接成功' ) CONST socketId = socket.id } }
ビン/ WWWフォルダのダウンロード監視サーバでだけで定義され、メソッドを呼び出します
サービスsocket.io操作方法、およびユーザーのチャットログを画定する第2の端部は、フロントエンドを監視します
(1)新しいsocketIdオブジェクトを作成し、ランダムにユーザがログイン中のユーザ毎に固有のsocketidが割り当てられます。
=必要LET(エクスプレス'エクスプレス' ;) マングースを聞かせて必要(= 'マングース' ); module.exportsは = 新しい新mongoose.Schema({ socketid:文字列を、// ランダムsocketid割り当てられた ユーザー名を:文字列 // ログインユーザー名 });
(2)以下のフォルダにsocketIdを保存するユーザーのための包装方法をsocketid
= IdtoidはLET(必要'../Models/Idtoid' ) module.exportsは = クラスSocketHandlerの{ 静的非同期savaUserSocketId(ユーザ名、socketID){ // ユーザIDを保存し、socketid のawait Idtoid.findOne({ :ユーザ名、ユーザ名を })。その後、((RS) => { IF(RS){!// 現在のユーザーが新しい上に存在しない場合は 、新たな新Idtoid({ ユーザー名:ユーザー名、 socketid:socketID 。})保存()を(()。 => { } ) } 他{ Idtoid.update({ ユーザー名:ユーザー名 }、{ socketid:socketId })。次に、(() => { }) } }) } }
(3)ロジックモニタのログインを実装し、チャットを監視
/ * 、サーバーのリスニング得るために、パッケージのsocket.io * / 聞かせてIdtoidが必要=を(「../Models/Idtoid」) せSocketHandlerのは、(必要= 」./socketioHander.js'); // ソケットが達成されます論理 VAR SocketIO = {} VAR必要=(socket_io 'Socket.IO' ) // 取得IO socketio.getSocketio = 機能(サーバ){ VAR IO = socket_io.listen(サーバ) io.sockets.on('接続'、ソケット=> { にconsole.log('成功した接続' ) CONST socketID =socket.id // 各ログインユーザsocketidのに割り当てられたモニターのユーザーのログイン、 socket.on('ログイン'、(ユーザー名)=> { はconsole.log('ユーザーがログイン' ) //は、saveメソッドを呼び出すsocketid SocketHandlerのを。 savaUserSocketId(ユーザ名、socketID) }) // 監視ユーザチャット、データは、フロントエンドデータから送信される socket.on('チャット'、(データ)=> { にconsole.log('ユーザがチャット、友人を開始' ) にconsole.log (データ) Idtoid.findOne({ ユーザー名:data.to_user })。次に、((RS) => { // 人に対応するメッセージ io.to(rs.socketid).emit('receiveMsg' 、{ from_user:data.from_user、 メッセージ:data.message、 時間:data.time、 avater:data.avater、 _id:data._id }) }) } ) }) } module.exportsは = socketio
(1)index.htmlファイルに組み込まれ、使用
(2)ユーザログオントリガー
(3)トリガささやき