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

BHe*_*cks 5 sockets heroku node.js express socket.io

所以我正在尝试使用示例heroku应用程序:https://github.com/lstoll/socket-io-chat-heroku 作为模板来构建我自己的socket.io应用程序,但我在Express 4.0上运行,节点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
Run Code Online (Sandbox Code Playgroud)

我的相关服务器代码如下:

 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) {
   ...
 });
Run Code Online (Sandbox Code Playgroud)

在我的客户端,我有以下内容:我已经尝试了两种方法(顺便说一下,这是玉石):

  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')
Run Code Online (Sandbox Code Playgroud)

这些选项都没有奏效,总是导致客户端出错.Express 4.0有什么特别之处吗?我在这里问了一个非常相似的问题:Node.js /socket.io/socket.io.js没有找到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
Run Code Online (Sandbox Code Playgroud)

我有:

 io.set('transports', ['xhr-polling']);
 io.set('polling duration', 10);
Run Code Online (Sandbox Code Playgroud)

要将其设置为xhr-polling,我的服务器代码几乎与上面的相同.然而,页面加载,并且只有在尝试发送聊天时才会发生任何事情并且404开始出现.

谢谢

vip*_*dha 0

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

io.set('transports', ['websocket', 
                  'flashsocket', 
                  'htmlfile', 
                  'xhr-polling', 
                  'jsonp-polling', 
                  'polling']);
Run Code Online (Sandbox Code Playgroud)