Javascript websocket 301使用域但不直接使用ip
我使用Javascript websocket 301使用域但不直接使用ip,javascript,node.js,websocket,dns,Javascript,Node.js,Websocket,Dns,我使用 const WebSocket = require('ws') const wss = new WebSocket.Server({ port: 8080 }); 当我尝试使用连接到服务器时 const connection = new WebSocket('ws://84.***.***.***:8080') // my ip adress 一切正常,没有错误,连接事件被触发,我可以发送消息。 如果我使用我的域名,例如 const connection = new WebSock
const WebSocket = require('ws')
const wss = new WebSocket.Server({ port: 8080 });
当我尝试使用连接到服务器时
const connection = new WebSocket('ws://84.***.***.***:8080') // my ip adress
一切正常,没有错误,连接事件被触发,我可以发送消息。如果我使用我的域名,例如
const connection = new WebSocket('ws://sub.example.com:8080')
我得到这个错误:
WebSocket connection to 'ws://sub.example.com:8080/' failed: Error during WebSocket handshake: Unexpected response code: 301
我使用A记录将子域指向我的实际域(使用cloudflair,从namescape导入)。
维基百科告诉我
HTTP响应状态代码301永久移动用于永久重定向,这意味着应更新使用接收此响应的URL的当前链接或记录
有没有关于我做错了什么的想法?这似乎是服务器问题,而不是代码问题,我不是专家,但我的理解是: Arecord将一个名称指向一个ip,因此浏览器点击该名称,然后重定向到websocket服务器所在的ip ws不能/不会跟踪重定向,至少不是现成的
我建议只使用ip而不是名称,因为这将为您节省很多麻烦我通过禁用此子域的CloudFlare代理解决了此问题我通过禁用此子域的CloudFlare代理解决了此问题,但感谢您的回答如果您解决了此问题,然后创建一个答案,以便其他人可以更轻松地找到它