gpt4 book ai didi

java - Websocket 示例将不起作用

转载 作者:搜寻专家 更新时间:2023-10-30 19:57:52 25 4
gpt4 key购买 nike

我试着运行这个例子:

import java.util.logging.Level;
import java.util.logging.Logger;
import javax.websocket.OnClose;
import javax.websocket.OnError;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;

@ServerEndpoint(value = "/chat")
public class ChatServer {

private static final Logger LOGGER =
Logger.getLogger(ChatServer.class.getName());

@OnOpen
public void onOpen(Session session) {
LOGGER.log(Level.INFO, "New connection with client: {0}",
session.getId());
}

@OnMessage
public String onMessage(String message, Session session) {
LOGGER.log(Level.INFO, "New message from Client [{0}]: {1}",
new Object[] {session.getId(), message});
return "Server received [" + message + "]";
}

@OnClose
public void onClose(Session session) {
LOGGER.log(Level.INFO, "Close connection for client: {0}",
session.getId());
}

@OnError
public void onError(Throwable exception, Session session) {
LOGGER.log(Level.INFO, "Error for client: {0}", session.getId());
}
}

我使用 Tomcat 7.0.47,我查看链接:ws://localhost/Tests/chat。我是否需要注册此 websocket 或在 web.xml 中添加一些内容?知道为什么对我不起作用吗?

最佳答案

我在 Tomcat 7.0.47 上尝试使用 WebSocket API 时遇到了同样的问题。客户端显示的错误消息根本没有任何帮助,而且我的服务器端端点从未被创建。

在浪费了很多时间之后,我发现这是由于我为 javax.websocket-api 设置依赖项的方式所致。我正在使用 Maven,它的默认作用域为 compile,这会导致问题,因为 Tomcat 在其 lib 文件夹中有 websocket-api.jar。将依赖项设置为 provided 解决了它。

    <dependency>
<groupId>javax.websocket</groupId>
<artifactId>javax.websocket-api</artifactId>
<version>1.0</version>
<scope>provided</scope>
</dependency>

希望对你有帮助

还值得注意的是,如果在 Apache 后面运行,您将需要 mod_proxy_wstunnel,如果使用 IIS,您将需要 8.0 版,因为之前的任何版本都不支持 websockets。

关于java - Websocket 示例将不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20092563/

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