所以我正在尝试使用示例 heroku 应用程序:https://github.com/lstoll/socket-io-chat-heroku作为构建我自己的 socket.io 应用程序的模板,但我在 Express 4.0、Node 0.10.x 和 Socket.io 0.9.16 上运行。
现在的问题是,当我运行我的服务器时,一切都很好,但是当我运行我的客户端时,我得到以下错误:
Uncaught ReferenceError: require is not defined socket.io.js:12
Uncaught ReferenceError: io is not defined chat2:2
我的相关服务器代码如下:
var app = express();
var http = require('http');
var server = http.createServer(app);
var sio = require('socket.io');
var port = 3000 || process.env.PORT;
server.listen(port);
var io = sio.listen(server);
io.sockets.on('connection'), function(socket) {
...
});
在我的客户端,我有以下内容: 我都试过了(顺便说一句,这是用 Jade 做的):
script(src='/socket.io/socket.io.js') OR script(src='http://localhost:3000/socket.io/socket.io.js')
var socket = io.connect() OR var socket = io.connect('http://localhost:3000')
这些选项都不起作用,总是导致客户端出错。 Express 4.0 有什么特别之处吗?我在这里问了一个非常相似的问题:Node.js /socket.io/socket.io.js not found express 4.0但这是让聊天使用不同模板的另一种尝试。
更新和编辑:经过一些工作后,我能够使用 express 4.0 和 socket.io 部署一个 heroku 应用程序,地址:http://salty-escarpment-7398.herokuapp.com/chat .
现在的问题是将它重新集成到我当前的应用程序中,经过大量工作后,我现在遇到错误:
22:19:56 web.1 | GET /socket.io/?EIO=2&transport=polling 404 26ms - 1.67kb
22:19:59 web.1 | GET /socket.io/?EIO=2&transport=polling 404 25ms - 1.67kb
我有:
io.set('transports', ['xhr-polling']);
io.set('polling duration', 10);
将其设置为 xhr-polling,我的服务器代码与上面的代码几乎相同。但是,该页面已加载,并且仅在尝试发送聊天时没有任何反应并且 404 开始出现。
谢谢
最佳答案
默认情况下,Socket.IO 1.0.4 允许轮询和 websocket 传输。你删除了轮询传输!返回轮询传输:
io.set('transports', ['websocket',
'flashsocket',
'htmlfile',
'xhr-polling',
'jsonp-polling',
'polling']);
关于node.js - Express 4.0 中的 Heroku socket.io 示例错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23274918/