您的位置:首页 > 运维架构 > Tomcat

基于tomcat7的websocket

2015-12-02 09:15 411 查看
后台
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" onclick="connect()"><br><br>

<input type="text" id="message">
<input type="button" value="发送" onclick="sendMes('sometH')"><br><br>
<input type="button" value="disconect" onclick="disConnect()">

</div>
</body>
</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: