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

标签 node.js sockets heroku express socket.io

所以我正在尝试使用示例 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/

相关文章:

node.js - Github Actions 和 npm - npm : command not found

javascript - Puppeteer 无法在 Heroku 上运行

php - XMLHttpRequest 无法加载资源

javascript - Node.js - 在返回响应之前不运行数据库 promise

node.js - HTTP2 的 Express 类型

mysql - sql查询不适用于node.js mysql,但适用于终端

python - 通过python中的原始套接字发送scapy数据包

c - Gethostbyaddr 在 Linux 中失败,但在 Windows 机器上工作

java - readLine()在聊天程序中引发异常,我不知道为什么

java - 将应用程序部署到 Heroku;不支持的主要版本.次要版本 51.0 错误