资源简介
它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。
代码片段和文件信息
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方法
- 下一篇:浪潮服务器管理网配置梳理
相关资源
- SpringBoot+H2+mybatis-plus59130
- 登录注册界面.zip48872
- 数字华容道
- SSM+Shiro+redis实现单点登陆
- jstl-api-1.2和jstl-impl-1.2
- 基于MVC模式的会员管理系统
- 国内一家大型软件公司内部的正规软
- 仿windows记事本
- websocket实现一对一聊天
- GUI银行管理系统
- 超市收银系统eclipse access大学课程设计
- 模拟ATM柜员机系统--连接数据库
- A*算法的2D演示(带源码)
- 代码审查表和代码审查实例
- 仿126 网易 163 邮箱 界面
- Tomcat6.x
- 简单的行编辑器
- 扫雷(MVC架构)
- 302 Found
- window ping命令加时间并记录日志
- springboot+rabbitmq项目demo(亲测可正常运
- jxbrowser 所有版本通用的破解包
- 2017年-传智播客-张志君老师-SpringBoo
- Blob.js+Export2Excel.js
- 机会路由源代码+仿真工具(SCORP)
- POI中文帮助文档附带api手册.zip
- 2018双十一阿里供应链服务平台讲座
- 原银在线信贷平台概要设计说明书v
- office_word_api 开发文档
- sun.misc.Unsafe源码
川公网安备 51152502000135号
评论
共有 条评论