WebSocket握手期间出错
问题描述:
我正在尝试按照this tutorial中给出的说明进行操作,并在Netbeans中创建示例应用程序。我已经达到了测试部分。当我在Chrome中运行应用程序,它说WebSocket握手期间出错
WebSocket连接到 'WS://本地主机:8080/WhiteboardApp/whiteboardendpoint':WebSocket的握手过程中的错误 :失败意外的响应代码:404
的index.html
<!DOCTYPE html>
<html>
<head>
<title>Start Page</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<h1>Collaborative Whiteboard App</h1>
<div id="output"></div>
<script type="text/javascript" src="websocket.js"></script>
</body>
</html>
websocket.js
var wsUri = "ws://" + document.location.host + document.location.pathname + "whiteboardendpoint";
var websocket = new WebSocket(wsUri);
websocket.onerror = function(evt) { onError(evt) };
function onError(evt) {
writeToScreen('<span style="color: red;">ERROR:</span> ' + evt.data);
}
// For testing purposes
var output = document.getElementById("output");
websocket.onopen = function(evt) { onOpen(evt) };
function writeToScreen(message) {
output.innerHTML += message + "<br>";
}
function onOpen(evt) {
writeToScreen("Connected to " + wsUri);
}
// End test functions
MyWhiteboard.java
package org.myapps.whiteboardapp;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;
@ServerEndpoint("/whiteboardendpoint ")
public class MyWhiteboard {
private static Set<Session> peers = Collections.synchronizedSet(new HashSet<Session>());
@OnMessage
public String onMessage(String message) {
return null;
}
@OnOpen
public void onOpen (Session peer) {
peers.add(peer);
}
@OnClose
public void onClose (Session peer) {
peers.remove(peer);
}
}
我在哪里出了错?我怎么解决这个问题 ?
答
您有一个无效的服务器注释
修复此
@ServerEndpoint("/whiteboardendpoint ")
要
@ServerEndpoint("/whiteboardendpoint") /* removed space */
你拥有了它当前定义的方式,你很可能只是改变你的JavaScript wsUri
定义。 ..
var wsUri = "ws://" + document.location.host + document.location.pathname +
"whiteboardendpoint%20";
var websocket = new WebSocket(wsUri);
并有它的工作。 (只是添加了一个URI编码空间)
我从教程中唯一的变化是,在创建项目时,我使用包作为'org.myapps.whiteboardapp'而不是'org.sample.whiteboardapp'。但是,这不是问题的原因,我认为 – 2014-09-28 14:23:09
你设法解决这个问题? – Mj1992 2016-07-11 12:50:12