将 socket.io 连接到不同的地址

Connect socket.io to different address

我正在开发一个 django 系统,该系统具有使用 socket.io 构建的内置聊天功能。

今天我试图在 webfaction 上获取所有内容,所以我将 django 部分注册到 http://example.com and the node/socket part to http://example.com/chat

我已经设法 socket.io.js 向浏览器提供服务,但连接无法正常工作。客户端正在尝试连接到 http://example.com instead of http://example.com/chat,所以我收到此错误:

Failed to load resource: the server responded with a status of 404 (Not Found)
http://example.com/socket.io/?EIO=3&transport=polling&t=1421523295233-0

在客户端我写了这个var socket = io.connect('http://example.com/chat/')来建立连接

我在服务器上写了这个:

var express = require('express');
var app = express()

var http = require('http');
var server = http.createServer(app).listen(20964, "127.0.0.1");

var io = require('socket.io')(server);

无法使用服务器 IP 地址,因为它可能会在未来发生变化。

我做错了什么?

谢谢

您必须在客户端上设置 path 选项:

io('http://example.com', {path: '/chat/socket.io'});

这是因为 socket.io 客户端默认尝试连接到 /socket.io,但在您的情况下,它托管在 /chat 下,因此您必须更改设置 socket.io与选项连接。