Express 4.0 中的 Heroku socket.io 示例错误

Posted

技术标签:

【中文标题】Express 4.0 中的 Heroku socket.io 示例错误【英文标题】:Heroku socket.io sample error in Express 4.0 【发布时间】:2014-06-10 02:14:50 【问题描述】:

所以我尝试使用示例 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) 
   ...
 );

在我的客户端,我有以下内容: 我都试过了(顺便说一句,这是玉石):

  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/?EIO=2... 404错误的方法了吗? 【参考方案1】:

默认情况下,Socket.IO 1.0.4 允许轮询和 websocket 传输。您删除了轮询传输!将轮询传输返回:

io.set('transports', ['websocket', 
                  'flashsocket', 
                  'htmlfile', 
                  'xhr-polling', 
                  'jsonp-polling', 
                  'polling']);

【讨论】:

以上是关于Express 4.0 中的 Heroku socket.io 示例错误的主要内容,如果未能解决你的问题,请参考以下文章

Heroku(Cedar) + Node + Express + Jade 子目录中的客户端 javascript 文件在本地与 foreman+curl 一起工作,但在推送到 Heroku 时不能

跨域会话 Cookie(Heroku 上的 Express API + Netlify 上的 React App)

尝试在 Heroku 上部署 Node.js/Express/Socket.io 应用程序时出现应用程序错误

Heroku 上的 HTTPS + SSL - Node + Express

Heroku 不会加载 index.html

如何在Express 4.0中发送Flash消息?