【问题标题】:Angular socket fails with 400 bad request角度套接字因 400 错误请求而失败
【发布时间】:2017-04-05 11:50:18
【问题描述】:

它是一个尝试连接到节点应用程序的角度应用程序(角度 1.X)。 设置起来并不容易(主要是前端),所以我最终把它放在前端(在 bower.json 中):

"socket.io-client": "^0.7.10",
"angular-socket-io": "^0.7.0"

这在后端(在 package.json 中):

"socket.io": "^1.7.3",

所以客户端的版本小于1.X,而服务器的版本大于1.X。

当我尝试连接时,我得到了

Bad request (HTTP 400) 

试图去

http://localhost/socket.io/1/

我只在前端的 socketFactory 中输入了这个:

io.connect('http://localhost/', {'transports': ['websocket', 'polling']});

我猜问题是正面和背面的版本不同?它们是否必须完全相同,或者两者都为 0.X 和 1.X 就足够了? 此外,没有解决方法吗?我很确定将前端升级到 1.X 会导致其他问题(当我降级到小于 1.X 时会丢失)

【问题讨论】:

    标签: angularjs socket.io


    【解决方案1】:

    当您尝试访问 http://localhost/socket.io/1/ 时,您正在执行 HTTP 方法 GET 请求。它与通过套接字连接不同。 所以在浏览器中打开http://localhost/socket.io/1/时返回错误的请求响应是正常的。

    【讨论】:

    • 好的,但它为什么会尝试发出 GET 请求?我在 socketFactory 中的调用是“io.connect('localhost:5555', {'transsports': ['websocket', 'polling']});”。这有什么问题?
    • 对不起,我以为你是想在浏览器中打开 url,因为你写的是“trying to go”
    • 我认为你需要看看socket.io/docs/rooms-and-namespaces 你还没有提到你在服务器端创建了一个 socket.io/1/ 命名空间。这就是为什么它只适用于localhost
    • 我不确定我理解你的意思。我没有在服务器上创建任何命名空间。至少在我的知识范围内不是。我现在在服务器端降级了 socket.io,它看起来更好。但我不确定它的工作原理。我至少没有得到400。在服务器端,我做了(并且做了)这个: var io = require('socket.io').listen(httpServer);
    • 现在我在 Firefox 中遇到错误:Firefox 无法建立与 ws://localhost/socket.io/1/websocket/1147323759171387168 的连接。
    猜你喜欢
    • 1970-01-01
    • 2010-10-21
    • 1970-01-01
    • 2023-01-25
    • 1970-01-01
    • 2017-07-09
    • 1970-01-01
    • 2015-01-06
    • 2014-09-08
    相关资源
    最近更新 更多