环境
nginx、socket.io、域名
nginx中的配置
server { listen 80; server_name app.example.com; location /socket.io { proxy_pass http://127.0.0.1:5000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }
问题
socket客户端使用端口(http://192.168.10.11:5000)可以连接并收发消息:
var socket = io('http://192.168.10.11:5000');
但使用域名配置可以连接却不能收发消息:
var socket = io('http://app.example.com/socket.io/'); //不可以
var socket = io('http://app.example.com/'); //可以
抓包发现了 ‘Invalid namespace’ 的信息,仔细对比发现 ,多了 ‘socket.io’ 的路径!!