socket.io connect中url带目录的问题

使用socket.io 来实现websocket,现在后端的链接是这样的:ws://103.31.201.1/some,通过nginx代理来去掉url中的非80端口(小程序不允许带端口,你懂的),但是实际请求中,socket.io总是把/some去掉,请求都发到ws://103.31.201.1下面去了,请问这种问题怎么处理?

var socket = io.connect('ws://103.31.201.1/some')
socket.on('even_name',function(data){
   console.log(data);
})

发出去的请求URL变成:

http://103.31.201.1/socket.io/?EIO=3&transport=polling&t=1492593587367-0

url中并没有/some 这样的目录路径,导致socket连接不上

补充:已完美解决:

var socket = io.connect('ws://103.31.201.1', {path: '/some/socket.io'})
socket.on('even_name',function(data){
   console.log(data);
})

默认情况下path是指向/socket.io,可以预设path来增加目录

阅读 14.3k
2 个回答
新手上路,请多包涵

你好,我遇到了你之前发的这个问题,根据你的解决方案配置了path之后,在nginx的access日志中发现请求返回状态码是400,你知道是怎么回事吗https://segmentfault.com/q/10... socket.io connect中url带目录的问题

新手上路,请多包涵

正常情况下应该返回的状态码是101(链接成功的状态码),你的nginx中配置相关socket链接的参数了么?比如HTTP1.1什么的,如果没有建议先百度下nginx关于socket链接的配置

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题