91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 523KB
    文件類型: .rar
    金幣: 2
    下載: 3 次
    發(fā)布日期: 2021-06-18
  • 語(yǔ)言: Java
  • 標(biāo)簽: java??webSocket??webRTC??

資源簡(jiǎn)介

基于webRTC和websocket簡(jiǎn)單實(shí)現(xiàn)多人視頻會(huì)議功能,前端純JS代碼,后臺(tái)JAVA代碼,主要實(shí)現(xiàn)功能暫未考慮效率,測(cè)試4人視頻會(huì)議延遲極低可控制在200毫秒內(nèi)

資源截圖

代碼片段和文件信息

package?com.scbd.bdpl.controller.multimedia;

import?java.io.IOException;
import?java.util.Collection;
import?java.util.HashMap;
import?java.util.Map;
import?java.util.Set;

import?javax.websocket.OnClose;
import?javax.websocket.OnMessage;
import?javax.websocket.OnOpen;
import?javax.websocket.Session;
import?javax.websocket.server.PathParam;
import?javax.websocket.server.ServerEndpoint;

import?com.alibaba.fastjson.JSON;
import?com.alibaba.fastjson.JSONobject;

/**
?*?websocket服務(wù)
?*?@author?Ivan
?*
?*/

@ServerEndpoint(“/websocket/{username}“)
public?class?SocketServer?{
private?static?Map?userOnlineMap?=?new?HashMap();

//連接時(shí)
@OnOpen
public?void?open(Session?session@PathParam(“username“)String?username)?{
for?(String?onlineUsername?:?userOnlineMap.keySet())?{
if(onlineUsername.equals(username))?{//用戶已存在
System.out.println(“用戶已存在或用戶名重復(fù)“);
return;
}
}
//轉(zhuǎn)發(fā)給其他人上線消息
JSONobject?json=new?JSONobject();
json.put(“type“?“userConnection“);
json.put(“data“?username);
forwardMessageExceptMe(session?json.toString());
System.out.println(username?+?“open“);
userOnlineMap.put(usernamesession);//添加用戶進(jìn)入在線列表
}

//收到消息
@OnMessage
public?void?OnMessage(String?message?Session?session@PathParam(“username“)String?username)?{
//獲得消息并轉(zhuǎn)為JSON
JSONobject?json=JSON.parseobject(message);
String?type=(String)?json.get(“type“);

//判斷消息
switch?(type)?{
//查詢?cè)诰€用戶
case?“getOnlineUserName“:
replyOnlineUserName(session);
break;
//轉(zhuǎn)發(fā)消息給sendTo
default:
String?sendBy=(String)?json.get(“sendBy“);
String?sendTo=(String)?json.get(“sendTo“);
if(sendBy!=null&&sendTo!=null)?{
forwardMessage(userOnlineMap.get(sendTo)?message);
}
break;
}

}

@OnClose
public?void?close(Session?session@PathParam(“username“)String?username)?{
System.out.println(username?+?“close“);
try?{
userOnlineMap.remove(username?session);
session.close();
//轉(zhuǎn)發(fā)給其他人下線消息
JSONobject?json=new?JSONobject();
json.put(“type“?“userClose“);
json.put(“data“?username);
forwardMessageExceptMe(session?json.toString());
}?catch?(IOException?e)?{
// e.printStackTrace();
}
}

//回復(fù)在線用戶
private?void?replyOnlineUserName(Session?session)?{
Set?OnlineUserNames=userOnlineMap.keySet();
JSONobject?json=new?JSONobject();
json.put(“type“?“userOnlineList“);
json.put(“data“?OnlineUserNames);
forwardMessage(sessionjson.toString());
}

//轉(zhuǎn)發(fā)消息特定目標(biāo)
private?void?forwardMessage(Session?sessionString?message)?{
try?{
session.getBasicRemote().sendText(message);
}?catch?(IOException?e)?{
// e.printStackTrace();
}
}
//轉(zhuǎn)發(fā)消息給所有人
private?void?forwardMessage(Collection?sessionsString?message)?{
for?(Session?session?:?sessions)?{
forwardMessage(sessionmessage);
}
}
//轉(zhuǎn)發(fā)消息給除自己以外的所有人
private?void?forwardMessageExceptMe(Session?sessionString?message)?{
for?(Session?sessions?:?userOnlineMap.values())?{
if(!sessions.equals(session)

?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----

?????文件?????535212??2018-08-06?16:45??webRTC多人視頻會(huì)議室\fastjson-1.2.41.jar

?????文件??????84349??2018-09-12?17:25??webRTC多人視頻會(huì)議室\jquery-2.1.4.min.js

?????文件???????3287??2018-10-29?16:05??webRTC多人視頻會(huì)議室\SocketServer.java

?????文件????????856??2018-10-29?16:28??webRTC多人視頻會(huì)議室\video.html

?????文件???????6322??2018-10-29?16:08??webRTC多人視頻會(huì)議室\video.js

?????文件????????194??2018-11-12?16:22??webRTC多人視頻會(huì)議室\說(shuō)明.txt

?????目錄??????????0??2018-11-12?16:20??webRTC多人視頻會(huì)議室

-----------?---------??----------?-----??----

???????????????630220????????????????????7


評(píng)論

共有 條評(píng)論

相關(guān)資源