基本信息
源码名称:java聊天室示例源码(WebSocket)
源码大小:11.10M
文件格式:.rar
开发语言:Java
更新时间:2018-07-19
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 1 元 
   源码介绍

        使用Socket技术的在线即使聊天的demo

        


package com.zlc.chat;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;

import javax.servlet.http.HttpServletRequest;
import javax.websocket.OnClose;
import javax.websocket.OnError;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;

import net.sf.json.JSONObject;
/**
 * 聊天服务器类
 * @author shiyanlou
 *
 */
@ServerEndpoint("/websocket")
public class ChatServer {
 private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm");  // 日期格式化
 
 private static Set<Session> sessionList = new HashSet<>();
 
 
 @OnOpen
 public void open(Session session) {
   // 添加初始化操作
   sessionList.add(session);
 
 }
 /**
  * 接受客户端的消息,并把消息发送给所有连接的会话
  * @param message 客户端发来的消息
  * @param session 客户端的会话
  */
 @OnMessage
 public void getMessage(String message, Session session,HttpServletRequest request) {
  // 把客户端的消息解析为JSON对象
  JSONObject jsonObject = JSONObject.fromObject(message);
  // 在消息中添加发送日期
  jsonObject.put("date", DATE_FORMAT.format(new Date()));
  
  // 把消息发送给所有连接的会话
  for (Session openSession : sessionList) {
   // 添加本条消息是否为当前会话本身发的标志
   jsonObject.put("isSelf", openSession.equals(session));
   // 发送JSON格式的消息
   openSession.getAsyncRemote().sendText(jsonObject.toString());
  }
  
  String ip = GetIp.getIpAddress(request);
  
  System.out.println(ip);
  
 }
 
 @OnClose
 public void close(Session session) {
 
 }
 
 @OnError
 public void error(Throwable t) {
  // 添加处理错误的操作
 }
}