使用Tomcat8实现WebSocket的简单例子

来源:互联网 发布:mac自动刷新功能 编辑:程序博客网 时间:2024/06/06 09:54

    运行环境: MyEclipse 2014+Tomcat 8 

    建立Web  Project工程如下图所示:

 如果 Add New Runtime处添加的是Tomcat 8的话就不需要导入新的Jar包了。

      编写WebSocket的Java程序

  @ServerEndpoint("/java/socket")        //使用注解建立连接点 
public class Progress
{
    @OnMessage                                    //接受客户端消息                     
    public void onMessage(String msg, Session session) throws Exception
    {
       
        System.out.println("msg : " + msg);
        System.out.println(session.getQueryString());
            String tmp = "让我们定义一个 Tomcat websocket服务器端";
            System.out.println("send msg : " + tmp);
            session.getBasicRemote().sendText(tmp);            //发送信息到客户端
              session.close();                                                 //关闭连接点              
    }
                                
    @OnOpen                                   //成功连接时执行此代码
    public void onOpen()
    {
        System.out.println("------------onOpen------------");
    }
     
    @OnClose                              //连接关闭时执行
    public void onClose()
    {
        System.out.println("------------onClose------------");
    }
}

  JSP代码如下

 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">    
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
  </head>
  
  <body>
       <button onclick="start()">测试</button>
<div id="messages"></div>
<script type="text/javascript">
 
    var webSocket = null;
     
    function init()
    {
        webSocket = new WebSocket('ws://127.0.0.1:8082/WebSocketAndTomcat/java/socket');           //建立连接点 WebSocketAndTomcat要换成自己的项目名
         
        webSocket.onerror = function(event) 
        {
          onError(event);
        };
         
        webSocket.onopen = function(event)            
        {
          onOpen(event);
        };
         
        webSocket.onmessage = function(event)    //接受客户端消息
        {
          onMessage(event);
        };
    }
     
    function onMessage(event)
    {
        document.getElementById('messages').innerHTML += '<br />' + event.data;
    }
     
    function onOpen(event)         
    {
        document.getElementById('messages').innerHTML  = 'Connection established';
      
         webSocket.send("ds");                          //发送消息给服务器端
    }
     
    function onError(event) 
    {
        alert(event.data);
    }
     
    function start() 
    {
        init();
    }
 
   </script>
  </body>
</html>

  这个例子很简单,如果您刚接触到WebSocket技术,可以用来入门。

0 0
原创粉丝点击