(1) 基于tomcat7和jdk1.7的websocket启动

来源:互联网 发布:云计算对生活的影响 编辑:程序博客网 时间:2024/06/07 03:58

1 开发环境 : myeclipse10 + tomcat7 + jdk1.7

2 需要导入jar包

 2.1 tomcat7-websocket.jar

 2.2 websocket-api.jar

3 项目截图

4  DemeConfig.java

   这是websocket配置类, 不需要再任何地方配置,启动 tomcat后会输出  -------------websoket start-----------------  ,表示成功

package com.webSocket.config;import java.util.Set;import javax.websocket.Endpoint;import javax.websocket.server.ServerApplicationConfig;import javax.websocket.server.ServerEndpointConfig;public class DemeConfig implements ServerApplicationConfig{//注解的方式 启动public Set<Class<?>> getAnnotatedEndpointClasses(Set<Class<?>> scan) {System.out.println("-------------websoket start-----------------");System.out.println("scan.size() = " + scan.size());return scan; //必须要返回scan,否则会造成连接失败}//接口方式启动public Set<ServerEndpointConfig> getEndpointConfigs(Set<Class<? extends Endpoint>> arg0) {return null;}}

 

5 EchoSocket.java

  服务器开启了一个叫 echo  的socket

package com.webSocket.client;import java.io.IOException;import javax.websocket.OnClose;import javax.websocket.OnMessage;import javax.websocket.OnOpen;import javax.websocket.Session;import javax.websocket.server.ServerEndpoint;@ServerEndpoint("/echo")public class EchoSocket {@OnOpenpublic void open(Session session){ //打开websocketString id = session.getId();System.out.println("websocket is open");System.out.println("user id  is " + id);System.out.println("session.isOpen() = " + session.isOpen());}@OnClosepublic void close(Session session){ //关闭websocketSystem.out.println("websocket is close");}@OnMessagepublic void message(Session session,String message){//接收客服端信息System.out.println("客服端信息为 : " + message);//给客服端发送信息try {            if (session.isOpen()) {                session.getBasicRemote().sendText("服务器说 : " + message);            }        } catch (IOException e) {            try {                session.close();            } catch (IOException e1) {                // Ignore            e1.printStackTrace();            }        }}}


6 index.jsp

<%@ page language="java" import="java.util.*,javax.*" 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>            <title>My JSP 'index.jsp' starting page</title>  </head>    <body>   <script type="text/javascript">     var ws=null;      var target = "ws://"+window.location.host+"/webSocketTest/echo"; // 打开管道  ,ws://localhost:8080/项目名/@ServerEndpoint名字     openWebsocket = function(){        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;         }         ws.onmessage = function (event) { //创建websocket同时,接收服务器发给客服端的消息         if(event!=null){          var servermsg =  event.data;          var textArea = document.getElementById("textAreadID");          textArea.value = textArea.value  + servermsg;                   }           };            }          sendMessage = function(){ //发送信息       if(ws!=null){         var sendMessageInput = document.getElementById("sendMessageInput");         var msg = sendMessageInput.value;        ws.send(msg);        sendMessageInput.value ="";              }       else{         alert("websocket is null , please create a websocket");       }     }   </script>      <button onclick="openWebsocket()">open</button>   <input id="sendMessageInput"></input>   <button onclick="sendMessage()">send</button></br>   <textarea id="textAreadID" rows="5" cols="20"></textarea>  </body></html>

 

7 操作方法  ,先点击 open ,然后在input输入信息 , 点击send , 会在 textarea区域更新信息 ,截图

0 0