【问题标题】:WebSocket handshake: Unexpected response code: 404WebSocket 握手:意外的响应代码:404
【发布时间】:2015-06-09 22:45:36
【问题描述】:

我正在编写我的第一个 websocket 程序并且得到 “WebSocket 握手:意外的响应代码:404”,加载网页时出错。

我正在使用 JDK 1.7 和 jboss 8 (wildfly8.0)。

有人可以帮忙吗?

window.onload = init;
var socket = new WebSocket("ws://localhost:8080/WebsocketHome/actions"); 
socket.onmessage = onMessage; 

然后进入html

<head> 
 <title></title>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <script src="websocket.js" type="text/javascript"></script> 
 <link rel="stylesheet" type="text/css" href="style.css"> 
</head>

【问题讨论】:

  • 你能告诉我们你是如何首先创建网络套接字的吗? 404 通常你的 url 是找不到的。而且我认为与其在评论中发布您的代码,不如直接编辑您的帖子。

标签: javascript websocket wildfly-8


【解决方案1】:

谢谢大家的建议,我找到了答案。

我复制的代码来自http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/HomeWebsocket/WebsocketHome.html 站点。

问题是js文件中提到的url,他们提出的项目名称是WebsocketHome。我已将项目名称更改为 Websocket,因此我的 url 应该是 ws://localhost:8080/Websocket/actions。

感谢您的支持。

【讨论】:

  • 感谢您回答您自己的问题。否则,偶然发现未回答的问题会令人沮丧。
【解决方案2】:

实际上,这里的问题是 URL 区分大小写。您不需要更改项目名称。只需将 JavaScript 文件中的 Websocket URL 更改为

ws://localhost:8080/WebSocketHome/actions 

(使用大写的 S,如项目名称所示)可以解决问题。在您的情况下,更改它们两个都消除了大小写不一致,所以它起作用了。

【讨论】:

    【解决方案3】:

    由于 /info=34424 的问题 - 出现 404 错误 - 我不得不放弃使用 other 地方建议的 xml 方法。我的项目中有 Spring 4.2,许多 SockJS Stomp 实现通常可以很好地与 Spring Boot 实现配合使用。 This implementation from Baeldung 工作(对我来说没有从 Spring 4.2 更改为 5)。在使用他博客中提到的依赖项后,它仍然给我ClassNotFoundError。我添加了以下依赖项来修复它。

    <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>4.2.3.RELEASE</version>
        </dependency>
    

    奇怪的是,Baeldung 的实现没有进行任何此类调用

    flow/websocket/add/info?t=1540813753999
    

    它的作用(发送和接收)如下。我只是粘贴它,以防精通这些库的人可以在这个论坛上进一步添加见解。

     >>> SEND
    destination:/app/chat
    content-length:38
    
    {"from":"nicholas","text":"try again"}
    
    <<< MESSAGE
    destination:/topic/messages
    content-type:application/json;charset=UTF-8
    subscription:sub-0
    message-id:m3p096zk-11
    content-length:53
    
    {"from":"nicholas","text":"try again","time":"13:46"}
    

    【讨论】:

      【解决方案4】:

      我的猜测是您正在尝试使用普通浏览器联系 websocket。 这是不允许的,并给出 404 错误。您需要使用脚本或 curl 来处理 websocket。

      【讨论】:

        猜你喜欢
        • 2015-08-10
        • 2018-03-27
        • 2014-05-15
        • 2017-12-13
        • 1970-01-01
        • 2019-09-06
        • 1970-01-01
        • 1970-01-01
        • 2015-12-26
        相关资源
        最近更新 更多