响应{“code”:0,“message”:“Transport unknown”}的Socket.io错误请求?

时间:2014-05-30 03:44:49

标签: javascript node.js socket.io http-status-code-400

我试图运行socket.io并且我得到了很多这些:

http://domain.com:8080/socket.io/?EIO=2&transport=polling&t=1401421022966-0 400 (Bad Request) 

这是我得到的回应:

{"code":0,"message":"Transport unknown"}

我找不到任何理由。我在某个地方看到它可能会误解客户,但这就是我能得到的。

7 个答案:

答案 0 :(得分:15)

我有同样的问题,从0.9.x升级后,结果我的服务器配置设置为['websocket', 'jsonp-polling'],这在0.9中有效,但客户端和服务器的默认配置现在是['polling', 'websocket'] 。 删除我的服务器配置让我开始运行。

配置现在记录在engine.io(https://github.com/automattic/engine.io)中,1.0中引入了新的传输层 - 特别是这一行:
transports ( String): transports to allow connections to (['polling', 'websocket'])

答案 1 :(得分:9)

从0.9.x升级到1.x.x后,我遇到了同样的问题。缩短长篇故事,我会将传输设置为['websocket','polling']然后错误......

当您将服务器配置为使用specefic transpors时,您应该在客户端将相同的配置设置为...

服务器

    var io = require('socket.io')(server, {'transports': ['websocket', 'polling']});

客户端

    var io = io( serverUri, {'transports': ['websocket', 'polling']});

答案 2 :(得分:3)

我有同样的问题:

获取最新的socket-client.js并在客户端使用这些文件,为我解决了这个问题。

答案 3 :(得分:2)

当我自己提供socket.io.js脚本时发生这种情况。 我不得不将node_modules/socket.io/node_modules/socket.io-client/socket.io.js复制到我提供服务的地方。

答案 4 :(得分:1)

服务器端

试试这个配置

const io = require('socket.io')(server, { 核心:{ 来源:"http://localhost:8100", 方法:[“GET”,“POST”], 传输:['websocket','轮询'], 凭据:真实 }, 允许EIO3:真 });

答案 5 :(得分:0)

我的解决方案是将node.js升级到最新版本(此帖子时为0.12.0)。最初,node.js作为捆绑包的一部分安装。一旦我卸载了来自该软件包的Node.js(Aptana 3软件包,node.js稍微落后),并安装了来自node.js网站的最新软件,最终开始工作了。

我正在尝试使用React.js。我花了几个小时调试这个现象,我在socket.io中发现了构建错误,特别是关于socket.io-client,它试图不成功地调用Visual Studio MSBuild。遗憾的是,node-gyp也出现了错误。显然,不需要socket.io-client来运行/提供我的例子,看起来这些不幸的错误(诱使我进入无尽的森林)似乎可以被忽略。

(我在安装webpack-dev-server时也注意到了一个模块,它只是Darwin(又名Mac OS X)。幸运的是这是一个可选的依赖。但它很可怕:我知道Apple非常潮人,但大多数世界不是Mac。)

答案 6 :(得分:0)

我修复了它在我的server.js中的作用

io实例初始化如下:

const io = socket.listen(httpServer, { serveClient: true })

在我有{ serveClient: false }之前,否则,我遇到了错误。但是实际上,如果您希望客户端从节点实例中获取io,则必须为其提供服务。

更新:最后,您只想让const io = socket.listen(httpServer) 这样默认情况下将是正确的。