【websocket】——用户登录实现广播

    咱们一般用的聊天软件都是先登录,然后会有一个提示谁上线的情况。其实这个操作是一个广播的过程。本文主要讲解利用websocket实现用户登录,并且简单的广播功能。

主要分为两大功能块

1、登录跳转

   这个过程和普通系统一样,jsp—》Servlet—》重定向(chat.jsp),如有不理解的直接看代码吧。

JSP

   //跳转到LoginServlet中
    <form action ="LoginServlet" method="get">
    	
    	name:<input name="username"/><br/>
    	<input type="submit"/>
    </form>
Servlet

@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet
{
    private static final long serialVersionUID = 1L;

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException
    {
        //获取jsp中传递的username
        String username = request.getParameter("username");
        //用户名放到session中
        request.getSession().setAttribute("username", username);
        //重定向到chat.jsp页面中
        response.sendRedirect("chat.jsp");
    }
}

2、简单广播(输出到后台)

    何为广播?

       

    在用户登录成功,进入聊天界面的过程,打开socket,同时这个时候把用户名同时传递,后台将其打印,以此检验数据的是否成功传递。

不理解之处,直接看代码吧。

chat.jsp 打开ws通道

<script type="text/javascript"  src="jquery-1.4.4.min.js"></script>
	<script type="text/javascript">
	    //EL表达式,获取用户
		var username ='${sessionScope.username}';
		var ws;//一个ws对象就是一个通信管道
		//打开socket通信的同时将广播的信息一并传入
	    var target = "ws://localhost:8888/webchat/chatSocket?username="+username;
		window.onload = function(){
			//进入聊天界面页面,就打开socket通信
	  		if("WebSocket"in window){
	  			ws = new WebSocket(target);
	  		}else if("MozWebSocket" in window){
	  			ws = new MozWebSocket(target);
	  		}else{
	  			alert("WebSocket is not supported by this browser.");
	  			return;
	  		}
	  }
实现用户登录之后的广播

@ServerEndpoint("/chatSocket")
public class ChatSocket
{  
    @OnOpen
    public void open(Session session)
    {
        // 当前websocket的session对象,不是Servlet中的session
        String queryString = session.getQueryString();
        System.out.println(queryString);
}
    其实这样广播就算是基本完成了,广播就是把消息传递给所有人,真正的广播消息,把在session中获取的内容输出到页面就可以了。其实广播和群聊的是一样的,广播就是一人发送消息,其余人接收,而且群聊就是有来有往。

【总结】

    广播的本质就是打开通信管道后把消息放到session中传递到服务端,之后从服务端获取发送到所有人就可以了。学的越多,生活中神秘感就越少一些。努力吧,骚年。。



  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 25
    评论
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mandy_i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值