我试图运行socket.io并且我得到了很多这些:
http://domain.com:8080/socket.io/?EIO=2&transport=polling&t=1401421022966-0 400 (Bad Request)
这是我得到的回应:
{"code":0,"message":"Transport unknown"}
我找不到任何理由。我在某个地方看到它可能会误解客户,但这就是我能得到的。
答案 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) 这样默认情况下将是正确的。