gpt4 book ai didi

java - WebSocket 握手期间出错

转载 作者:行者123 更新时间:2023-12-02 10:53:51 25 4
gpt4 key购买 nike

我正在尝试按照 this tutorial 中给出的说明进行操作并在 Netbeans 中创建示例应用程序。我已经到达测试部分了。当我在 Chrome 中运行应用程序时,它显示

WebSocket connection to 'ws://localhost:8080/WhiteboardApp/whiteboardendpoint' failed: Error during WebSocket handshake: Unexpected response code: 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编码空格)

关于java - WebSocket 握手期间出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26085780/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com