首页>代码>java实现即时消息提醒方法>/java推送/RtcServlet.java
package com.gxzy.framework.comm.rtc.web;

import java.io.IOException;
import java.util.Date;

import javax.servlet.AsyncContext;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.shiro.SecurityUtils;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import com.gxzy.framework.comm.rtc.entity.RtcMessage;
import com.gxzy.framework.comm.rtc.listener.RtcAsyncListener;
import com.gxzy.framework.comm.rtc.service.RtcService;
import com.gxzy.framework.env.spring.SpringContext;
import com.gxzy.framework.util.security.UserTool;
import com.gxzy.framework.util.serialize.JsonSerialize;

/**
 * Servlet implementation class RtcServlet
 */
@WebServlet(urlPatterns="/comm/RtcServlet", asyncSupported=true)
public class RtcServlet extends HttpServlet {
    
    private static final long serialVersionUID = 1L;
    
    private RtcService rtcService;
    
    /**
     * @see HttpServlet#HttpServlet()
     */
    public RtcServlet() {
        super();
        // TODO Auto-generated constructor stub
    }
    
    @Override
    public void init() throws ServletException
    {
      
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
    	
    	
        //如果用户没有登入
        if(!SecurityUtils.getSubject().isAuthenticated())
        {
        	
        	/**
            RtcMessage msg = new RtcMessage();
            msg.setCreateTime(new Date());
            msg.setMsgType("SYS_OFFLINE");
            msg.setMsgBody("您尚未登入或者登入超时,请重新登入...");           
            response.getWriter().print(JsonSerialize.encode(msg));
            response.getWriter().flush();
            **/
        	
        	response.getWriter().print("{\"success\":false,\"message\":\"当前用户已退出\"}");
        	
            return;
        }
        
        rtcService = SpringContext.getBean("rtcServiceImpl");
        
        AsyncContext context = request.startAsync(request, response);
        
        //为什么要传递,因为直接获得有问题 ,经测试  无问题
        //request.setAttribute("sessionId", request.getSession().getId());
        
        response.setContentType("text/html; charset=UTF-8");
        
        response.setCharacterEncoding("UTF-8");
        
        String username = UserTool.getInstance().getCurrentUsername();
        
        
        context.addListener(new RtcAsyncListener(username));
        
        context.setTimeout(1*30*1000);
        
        rtcService.setupConnection(username, context);
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
    	this.doGet(request, response);
    }

    /**
     * @see HttpServlet#doPut(HttpServletRequest, HttpServletResponse)
     */
    protected void doPut(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
    }

    /**
     * @see HttpServlet#doDelete(HttpServletRequest, HttpServletResponse)
     */
    protected void doDelete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
    }

}
最近下载更多
dapeng0011  LV15 8月25日
zgf099  LV1 2022年9月19日
hanweinan6  LV13 2022年9月16日
Jack261108  LV2 2022年5月6日
hnn0909  LV1 2022年4月2日
lyxtmy  LV1 2022年1月27日
msssg123  LV1 2022年1月25日
ruiqiujuice  LV1 2021年12月21日
密码烟雨城  LV1 2021年12月13日
cyx1314cmx 2021年11月13日
暂无贡献等级
最近浏览更多
dearxo2014  LV1 11月9日
dapeng0011  LV15 8月25日
西瓜哥哥  LV4 2023年12月17日
诚壹lllyz 2023年11月17日
暂无贡献等级
溪若白  LV1 2023年7月13日
Dominick  LV14 2023年6月19日
zzhua195  LV6 2023年5月29日
wuziayng1232  LV10 2023年2月21日
long123_356  LV7 2022年12月10日
BestClever  LV32 2022年12月5日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友