【发布时间】:2013-12-15 08:19:25
【问题描述】:
我正在努力使用使用 socket.io 的 Express/Node/PeerJs 应用程序。它在 localhost 中有效,但在推送到 heroku 或 nodejitsu 时无效。
这是我在 app.js 中的内容:
var routes = require('./routes');
var express = require('express');
var path = require('path');
var https = require('https');
var fs = require('fs');
var url = require('url');
var app = express(),
http = require('http'),
server = http.createServer(app),
io = require('socket.io');
app.engine('.html', require('ejs').__express);
app.set('port', process.env.PORT || 5500);
app.set('view engine', 'html');
app.set('views', __dirname + '/views');
...
console.log(process.env.port);
app.configure('development', function(){
app.use(express.errorHandler());
});
server.listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});
var sockets = io.listen(server);
app.get('/', function(req, res){
res.render('index');
});
//more code
在 chatroom.html 中:
<script type="text/javascript"></script>
<script src="myapp.herokuapp.com:5500/socket.io/socket.io.js"></script>
<script src="http://cdn.peerjs.com/0.3/peer.js"></script>
var socket = io.connect('http://myapp.herokuapp.com:5500/');
var peer = new Peer({key: 'mykey', debug: true});
peer.on('open', function(peer) {
peer_id = peer;
console.log('my peer id is ' + peer_id);
socket.emit('peer', {peer_id: peer_id, chatroom: chatroomString});
console.log('peer id and chatroom string: ', {peer_id: peer_id, chatroom: chatroomString});
});
//rest of code
我尝试过更改 /socket.io/socket.io.js 的路径、添加 http、更改端口以及许多其他愚蠢的事情。然而不幸的是,它在 localhost 中有效,但当我同时推送到 nodejitsu 和 heroku 时却不行。
有一些相对相似的问题(我可以找到),但没有足够的答案。 Socket.io Failed to load resource socket.io: Failed to load resource
不胜感激。
解决方案!!!
在我的 app.js 文件中
var app = express(),
http = require('http'),
server = http.createServer(app),
io = require('socket.io').listen(server);
var sockets = io;
在我的 chatroom.html 文件中
<script src="/socket.io/socket.io.js"></script>
var socket = io.connect('http://myapp.herokuapp.com/');
您只需从 html 文件中取出端口号。
【问题讨论】:
-
您没有使用正确的 URL 来加载
socket.io.js。如果这不是问题,请检查您的浏览器控制台以查看是否弹出任何错误。 -
谢谢。我实际上已经尝试过“/socket.io/socket.io.js”以及“http:myapp.herokuapp.com:5500/socket.io/socket.io.js”和“myapp.herokuapp.com”的所有变体: 5500/socket.io/socket.io.js'。它们都不起作用。
-
解决方案!!!推heroku时取出端口号!
标签: node.js sockets express socket.io webrtc