基于tomcat7的websocket

后台
import java.io.BufferedReader;

/*
 *  Licensed to the Apache Software Foundation (ASF) under one or more
 *  contributor license agreements.  See the NOTICE file distributed with
 *  this work for additional information regarding copyright ownership.
 *  The ASF licenses this file to You under the Apache License, Version 2.0
 *  (the "License"); you may not use this file except in compliance with
 *  the License.  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */

import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.ByteBuffer;

import javax.websocket.OnMessage;
import javax.websocket.PongMessage;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;

@ServerEndpoint("/websocket/echoAnnotation")
public class EchoAnnotation {

	@OnMessage
	public void echoTextMessage(Session session, String msg, boolean last) throws Exception {
		try {
			if (session.isOpen()) {
				Runtime rt = Runtime.getRuntime();
				String ip = msg;
				try {
					Process p = rt.exec("ping " + ip);
					BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));

					int count=0;
					while (true) {
						count++;
						String strRead;
						strRead = br.readLine();
						if (strRead == null)
							break;
						
						System.out.println(strRead);
						session.getBasicRemote().sendText(strRead+count, last);
					}
				} catch (Exception e) {
					// TODO: handle exception
				}

			}
		} catch (Exception e) {
			try {
				session.close();
			} catch (IOException e1) {
				// Ignore
			}
		}
	}

	@OnMessage
	public void echoBinaryMessage(Session session, ByteBuffer bb, boolean last) {
		try {
			if (session.isOpen()) {
				session.getBasicRemote().sendBinary(bb, last);
			}
		} catch (IOException e) {
			try {
				session.close();
			} catch (IOException e1) {
				// Ignore
			}
		}
	}

	/**
	 * Process a received pong. This is a NO-OP.
	 *
	 * @param pm
	 *            Ignored.
	 */
	@OnMessage
	public void echoPongMessage(PongMessage pm) {
		// NO-OP
	}
}



前台:

<head>
    <title>Test</title>
    <script src="http://cdn.sockjs.org/sockjs-0.3.min.js"></script>

    <script type="text/javascript">
        var ws;
        //连接
        function connect(){
        	ws = new WebSocket("ws://localhost:8080/websocketTest/websocket/echoAnnotation");
            ws.onopen = function () {
            	console.info('已连接!');
            };
            ws.onmessage = function (event) {
            	receveMes(event);
            };
            ws.onclose = function (event) {
            	console.info('已关闭!');
            };
        }
        //断开连接
        function disConnect(){
        	 ws.close();
             ws = null;
        }
        //发送信息
        function sendMes(message){
        	ws.send(message);
        }
        //接受信息
        function receveMes(event){
        	console.info('event.data:'+event.data);
        }
        
        
    </script>
</head>
<body>
<div>
        <input type="button" value="connect" οnclick="connect()"><br><br>
        
        <input type="text" id="message">
        <input type="button" value="发送" οnclick="sendMes('sometH')"><br><br>
        <input type="button" value="disconect" οnclick="disConnect()">
        
        
        
</div>
</body>
</html>


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值