tomcat 8 jdk 1.7 eclipse中Build id: 20140925-1800
在java后台写的websocket前端jsp中始终出现404的错误,网上查了下有说差jar包的有说tomcat 7以上的,我这都满足了要求为什么还要报错呢?请各位帮我看看嘛
@ServerEndpoint(value = "/websocket/chat")
public class ChatAnnotation {
private static final Log log = LogFactory.getLog(ChatAnnotation.class);
private static final String GUEST_PREFIX = "Guest";
private static final AtomicInteger connectionIds = new AtomicInteger(0);
private static final Map<String,Object> connections = new HashMap<String,Object>();
private final String nickname;
private Session session;
public ChatAnnotation() {
nickname = GUEST_PREFIX + connectionIds.getAndIncrement();
}
@OnOpen
public void start(Session session) {
this.session = session;
connections.put(nickname, this);
String message = String.format("* %s %s", nickname, "has joined.");
broadcast(message);
}
@OnClose
public void end() {
connections.remove(this);
String message = String.format("* %s %s",
nickname, "has disconnected.");
broadcast(message);
}
/**
* 消息发送触发方法
* @param message
*/
@OnMessage
public void incoming(String message) {
// Never trust the client
String filteredMessage = String.format("%s: %s",
nickname, HTMLFilter.filter(message.toString()));
broadcast(filteredMessage);
}
@OnError
public void onError(Throwable t) throws Throwable {
log.error("Chat Error: " + t.toString(), t);
}
/**
* 消息发送方法
* @param msg
*/
private static void broadcast(String msg) {
if(msg.indexOf("Guest0")!=-1){
sendUser(msg);
} else{
sendAll(msg);
}
}
/**
* 向所有用户发送
* @param msg
*/
public static void sendAll(String msg){
for (String key : connections.keySet()) {
ChatAnnotation client = null ;
try {
client = (ChatAnnotation) connections.get(key);
synchronized (client) {
client.session.getBasicRemote().sendText(msg);
}
} catch (IOException e) {
log.debug("Chat Error: Failed to send message to client", e);
connections.remove(client);
try {
client.session.close();
} catch (IOException e1) {
// Ignore
}
String message = String.format("* %s %s",
client.nickname, "has been disconnected.");
broadcast(message);
}
}
}
/**
* 向指定用户发送消息
* @param msg
*/
public static void sendUser(String msg){
ChatAnnotation c = (ChatAnnotation)connections.get("Guest0");
try {
c.session.getBasicRemote().sendText(msg);
} catch (IOException e) {
log.debug("Chat Error: Failed to send message to client", e);
connections.remove(c);
try {
c.session.close();
} catch (IOException e1) {
// Ignore
}
String message = String.format("* %s %s", c.nickname, "has been disconnected.");
broadcast(message);
}
}
}
<!DOCTYPE HTML>
<script type="text/javascript">
function WebSocketTest()
{
if ("WebSocket" in window)
{
alert("WebSocket is supported by your Browser!");
// Let us open a web socket
var ws = new WebSocket("ws://192.168.2.158:8080/WebRTC/websocket/chat");
ws.onopen = function()
{
// Web Socket is connected, send data using send()
ws.send("Message to send");
alert("Message is sent...");
};
ws.onmessage = function (evt)
{
var received_msg = evt.data;
alert("Message is received...");
};
ws.onclose = function()
{
// websocket is closed.
alert("Connection is closed...");
};
}
else
{
// The browser doesn't support WebSocket
alert("WebSocket NOT supported by your Browser!");
}
}
</script>
<div id="sse">
<a href="javascript:WebSocketTest()">Run WebSocket</a>
</div>