后台
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>