• 大小: 97KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-10
  • 语言: 其他
  • 标签: webSocket  java  

资源简介

它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。

资源截图

代码片段和文件信息

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.xml
     文件         386  2018-05-25 06:37  webSocket\.settings\org.eclipse.wst.common.project.facet.core.xml
     文件          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.xml
     目录           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.xml
     文件         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个文件信息

评论

共有 条评论