WebRTC(ウェブリアルタイムコミュニケーション)
- WebRTC(ウェブリアルタイムコミュニケーション)は、ビデオストリーミングのためのブラウザとの接続点を(ピア・ツー・ピア)を確立するために、仲介者の助けを借りずに、ネットワークアプリケーションやサイトを可能にするリアルタイムの通信技術であり、及び(又は)、オーディオストリーム、またはその他のデータ伝送。これらの基準はのWebRTCは、アドホック(ピアツーピア)データ共有や会議が可能呼び出しを作成するために、任意のプラグインやサードパーティ製のソフトウェアをインストールすることなく、ユーザーを可能にしています。
WebSocketを
-
WebSocketのある通信プロトコルは、それが単一であってもよいTCP接続のための全二重通信を。よる2011年のWebSocketプロトコルIETFは、として標準RFC 6455の後、RFC 7936の補足仕様。ウェブIDLはでのWebSocket APIであるW3Cの標準化。
WebSocketは、サーバーが積極的にクライアントにデータをプッシュすることができ、より簡単にクライアントとサーバー間のデータ交換を可能にします。WebSocket APIでは、ブラウザとサーバーはハンドシェイクを完了する必要があり、次の2つ、および双方向のデータ伝送間の永続的な接続を作成することができます。
基本構成
-
WebSocketの設定のサポートは、注入が注意しなければならない必要@Autowired
-
初期化は、プロジェクトの開始のWebSocket、春がそのサービスを注入します、この時間は、オブジェクトがnullではない@Autowired
-
しかし、春のデフォルトの管理シングルトンは、サービス、新しいユーザーがチャットに入ったときに、システムは、新しいオブジェクトがWebSocketのサービスを注入していない、@Autowiredがnullエラーです。この時間を新しいのWebSocketオブジェクトを作成を注入します
-
ソリューション:stataic ||春を使用して変更のWebSocketの実装が来ます
-
/** * 开启WebSocket支持 * * @author wangJiaLun * @date 2019-06-19 **/ @Configuration public class WebSocketConfig extends ServerEndpointConfig.Configurator{ @Bean public ServerEndpointExporter serverEndpointExporter() { return new ServerEndpointExporter(); } }
-
-
WebSocketのアクセス・パスの設定、および主な方法が説明
-
@Component @ServerEndpoint(value = "/websocket/chat",configurator = WebSocketConfig.class) public class WebsocketServer { /** * 连接建立成功调用的方法 * 判断接受人与当前登录人是否已经拥有房间,无则创建 * 输出历史消息 * @param session 会话 */ @OnOpen public void onOpen(Session session) { } /** * 收到客户端消息后调用的方法 * @param message 客户端发送过来的消息 * @param session 会话 */ @OnMessage public void onMessage(String message, Session session) { } /** * 当关闭浏览器后,则删除session记录和对话准备 */ @OnClose public void onClose(Session session) { } /** * 当发生异常错误调用的方法 * @param session 会话 * @param error 异常信息 */ @OnError public void onError(Session session, Throwable error) { } }
-
-
接続用WebSocketを作成します。
-
ws = new WebSocket("ws://192.168.3.102:8070/websocket/chat");
-
-
シグナリングビルドのWebRTC
-
インスタンスPeerConnectionを作成します
-
var PeerConnection = (window.PeerConnection || window.webkitPeerConnection00 || window.webkitRTCPeerConnection || window.mozRTCPeerConnection);
-
-
前と信号交換プロセスを転送した後、
-
スタート接続
-
すぐに接続成功データを送信開く時にwebcketを作成し、フロントエンド・プロセスの後
-
this.ws = new WebSocket("ws://192.168.3.102:8070/websocket/chat"); let self = this; this.ws.onopen = function(ev) { self.ws.sendJson({ messageHistoryVO: { senderId: , recipientId: }, messageTypeEnum: "CONNECTION_SUCCESS" }); };
-
@OnMessage方法は後端を発射後端の先端がデータを転送する必要がない場合は、このステップなしで実施することができます
-
プロセスで直接ビジネスロジックを完了し@OnOpen
-
すべての分析データの最初の
-
MessageStruct messageStruct = new MessageStruct(); try { messageStruct = JSON.parseObject(message,MessageStruct.class); }catch (Exception e){ e.printStackTrace(); } MessageContent messageContent = new MessageContent();
-
送信メッセージタイプのフロントエンドの異なるステップを実行します
-
switch (messageStruct.getMessageTypeEnum()){ case CONNECTION_SUCCESS: messageContent.setMessageState(new ConnectionSuccessMessageState()); break; case SINGLE_CHAT_TEXT: messageContent.setMessageState(new SingleChatMessageState()); break; case INITIATE_SINGLE_CHAT_AUDIO_VIDEO: messageContent.setMessageState(new InitiateSingleChatAudioVideoMessageState()); break; case ACCEPT_SINGLE_CHAT_AUDIO_VIDEO: messageContent.setMessageState(new AcceptSingleChatAudioVideoMessageState()); break; case SINGLE_SENDER_SIGNALING: messageContent.setMessageState(new SingleSenderSignalingState()); break; case CONNECTION_CLOSE: messageContent.setMessageState(new ConnetionCloseState()); break; default: ; } messageContent.doOperation(messageStruct.getMessageHistoryVO(), session);
-
-
オーディオとビデオの対話型プロセス