资源简介
它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。
代码片段和文件信息
package com.webSocket;
import java.io.IOException;
import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap;
import javax.websocket.OnClose;
import javax.websocket.onerror;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
import net.sf.json.JSONArray;
import net.sf.json.JSONobject;
@ServerEndpoint(value = “/meeting/{param}“)
public class MeetingService {
// 静态变量,用来记录当前在线连接数。应该把它设计成线程安全的。
private static int onlineCount;
private static final Map connections = new ConcurrentHashMap<>();
private Session session;
private String role;
private String socketId;
public MeetingService() {
}
@OnOpen
public synchronized void start(@PathParam(“param“) String paramSession session) {
this.session = session;
String[] arr=param.split(““);
this.role=param;
this.socketId=arr[1];
connections.put(rolethis);
broadcast(“{\“event\“:\“msg\“\“data\“:\““+role+“\“}“socketId);
JSONArray array=new JSONArray();
for (Entry client : connections.entrySet()) {
if(client.getValue().socketId.equals(socketId)||client.getValue().socketId==socketId){
array.add(client.getKey());
}
}
send(“{\“event\“:\“rolelist\“\“data\“:“+array.toString()+“}“ rolesocketId);
addOnlineCount(); // 在线数加
System.out.println(“有新连接加入!新用户:“+role+“当前在线人数为“ + getOnlineCount());
}
@OnClose
public void end() {
connections.remove(role);
System.out.println(socketId);
String msg=(“{\“event\“:\“role\“\“data\“:\““+role+“\“}“);
broadcast(msgsocketId);
subOnlineCount(); // 在线数减
System.out.println(“有一连接关闭!当前在线人数为“ + getOnlineCount());
}
@OnMessage
public void incoming(String message) {
try {
JSONobject json=JSONobject.fromobject(message);
if(json.has(“msg“)){
broadcast(messagesocketId);
}
if(json.has(“to“)){
send(messagejson.getString(“to“)socketId);
}
String string = ““;
String to = null;
if(json.has(“message“)){
string = (String) json.get(“message“);
}
if(json.has(“role“)){
to = (String) json.get(“role“);
}
send(“{\“event\“:\“message\“\“data\“:\““+string+“\“\“from\“:\““+role+“\“}“roletosocketId);
} catch (Exception e) {
// TODO: handle exception
}
}
@onerror
public void onerror(Throwable t) throws Throwable {
System.out.println(“Chat Error: “ + t.toString());
}
//发送给指定角色
private static void send(String msgString fromString toString s
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-05-25 06:37 webSocket\
文件 1358 2018-05-25 06:37 webSocket\.classpath
文件 9 2018-05-25 06:37 webSocket\.gitignore
文件 1085 2018-05-25 06:37 webSocket\.project
目录 0 2018-05-25 06:37 webSocket\.settings\
文件 639 2018-05-25 06:37 webSocket\.settings\.jsdtscope
文件 96 2018-05-25 06:37 webSocket\.settings\org.eclipse.core.resources.prefs
文件 736 2018-05-25 06:37 webSocket\.settings\org.eclipse.jdt.core.prefs
文件 90 2018-05-25 06:37 webSocket\.settings\org.eclipse.m2e.core.prefs
文件 668 2018-05-25 06:37 webSocket\.settings\org.eclipse.wst.common.component
文件 321 2018-05-25 06:37 webSocket\.settings\org.eclipse.wst.common.project.facet.core.prefs.xm
文件 386 2018-05-25 06:37 webSocket\.settings\org.eclipse.wst.common.project.facet.core.xm
文件 49 2018-05-25 06:37 webSocket\.settings\org.eclipse.wst.jsdt.ui.superType.container
文件 6 2018-05-25 06:37 webSocket\.settings\org.eclipse.wst.jsdt.ui.superType.name
文件 50 2018-05-25 06:37 webSocket\.settings\org.eclipse.wst.validation.prefs
文件 1686 2018-05-25 06:37 webSocket\pom.xm
目录 0 2018-05-25 06:37 webSocket\src\
目录 0 2018-05-25 06:37 webSocket\src\main\
目录 0 2018-05-25 06:37 webSocket\src\main\java\
目录 0 2018-05-25 06:37 webSocket\src\main\java\com\
目录 0 2018-05-25 06:37 webSocket\src\main\java\com\webSocket\
文件 5444 2018-05-25 06:37 webSocket\src\main\java\com\webSocket\MeetingService.java
文件 7472 2018-05-25 06:37 webSocket\src\main\java\com\webSocket\WebRtc.java
文件 3344 2018-05-25 06:37 webSocket\src\main\java\com\webSocket\WebSocketMany.java
文件 3966 2018-05-25 06:37 webSocket\src\main\java\com\webSocket\WebSocketOneToOne.java
文件 18 2018-05-25 06:37 webSocket\src\main\java\com\webSocket\tip
目录 0 2018-05-25 06:37 webSocket\src\main\webapp\
目录 0 2018-05-25 06:37 webSocket\src\main\webapp\WEB-INF\
文件 342 2018-05-25 06:37 webSocket\src\main\webapp\WEB-INF\web.xm
文件 953 2018-05-25 06:37 webSocket\src\main\webapp\index.jsp
文件 777 2018-05-25 06:37 webSocket\src\main\webapp\involver.jsp
............此处省略20个文件信息
- 上一篇:基于遗传算法的SVM方法
- 下一篇:浪潮服务器管理网配置梳理
相关资源
- web项目概要设计文档模板
- 亲戚关系计算机
- UDP动态温度曲线图
- 微服务监控模板
- 亚信培训项目文档--框架及开发需求(
- M3u8视频工具
- ECharts V3.1.6 最新图表控件修复版兼容
- Struts2.3.15.1版本升级到2.3.32详细流程
- 软件测试 三角形测试
- 计算机网络课程设计:简单FTP客户端
- 使用modbus4j获取数据的源代码
- 桌面弹球游戏代码以及个人总结
- 使用Socket传输视频
- 使用Socket传输音频
- 定义一个接口Assaultable(可攻击的),
- J2ME斜45度游戏引擎
- WEBSOCKET_fleck.dll
- it项目测试文档(全集)
- Netty+H5实现实时进度条文件上传,支持
- Spring Security技术栈开发企业级认证与
- 支付宝在线支付视频教程
- 顺丰科技2019 秋招视觉算法工程师笔试
- peers0.43源代码
- Activiti6工作流视频整合SpringBoot2.0
- 每特教育第三期
- MSINET.OCX
- SpringBoot WebSocket消息推送群发和指定到
- 雷霆战机代码
- 学生成绩管理系统+数据库课程设计
- arcgis api for js 自定义弹出专题图(饼
评论
共有 条评论