栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java 实现wobsocket 聊天室

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java 实现wobsocket 聊天室

文章目录
  • 一、java 实现wobsocket 聊天室
  • 二、使用步骤
    • 1.pom.xml 引入jar包
    • 2.java 代码(WsServer.java)
    • 3.web 页面代码(room.html)

一、java 实现wobsocket 聊天室

开发工具:eclipse +jdk8+tomcat8.5+ssm
项目结构如下

网页聊天室界面如下,可以开多个页面

二、使用步骤 1.pom.xml 引入jar包

代码如下(示例):


		
			javax.websocket
			javax.websocket-api
			1.0
			provided
		
2.java 代码(WsServer.java)

代码如下(示例):

package com.xx.xxx.websocket;

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 java.util.HashSet;
import java.util.Set;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArraySet;
 

@ServerEndpoint("/webSocket/chat/{roomName}")
public class WsServer {
 
    // 使用map来收集session,key为roomName,value为同一个房间的用户集合
    // concurrentMap的key不存在时报错,不是返回null
    private static final Map> rooms = new ConcurrentHashMap();
 
    @OnOpen
    public void connect(@PathParam("roomName") String roomName, Session session) throws Exception {
        // 将session按照房间名来存储,将各个房间的用户隔离
        if (!rooms.containsKey(roomName)) {
            // 创建房间不存在时,创建房间
            Set room = new HashSet<>();
            // 添加用户
            room.add(session);
            rooms.put(roomName, room);
        } else {
            // 房间已存在,直接添加用户到相应的房间
            rooms.get(roomName).add(session);
        }
        System.out.println("有一个用户加入房间聊天");
    }
 
    @OnClose
    public void disConnect(@PathParam("roomName") String roomName, Session session) {
        rooms.get(roomName).remove(session);
        System.out.println("有一个用户离开房间");
    }
 
    @OnMessage
    public void receiveMsg(@PathParam("roomName") String roomName,
                           String msg, Session session) throws Exception {
        System.out.println(" 此处应该有html过滤");
    	// 此处应该有html过滤
//        msg = session.getId() + ":" + msg;
        System.out.println(msg);
        // 接收到信息后进行广播
        broadcast(roomName, msg);
    }
 
    // 按照房间名进行广播
    public static void broadcast(String roomName, String msg) throws Exception {
       System.out.println("按照房间名进行广播");
    	for (Session session : rooms.get(roomName)) {
        	
                session.getBasicRemote().sendText(msg);
        }
    }
 
}

3.web 页面代码(room.html)


    
    网络聊天室








转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/949290.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号