Я борюсь с приложением Express/Node/PeerJs, которое использует socket.io. Он работает в localhost, но не при нажатии на герою или nodejitsu.Socket.io не удалось загрузить клиентскую часть ресурса, работает на localhost
Вот что я имею в 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'. Если это не проблема, проверьте консоль браузеров, чтобы увидеть, появляются ли какие-либо ошибки. – robertklep
спасибо. Я действительно пробовал «/socket.io/socket.io.js» и все варианты «http: myapp.herokuapp.com: 5500/socket.io/socket.io.js» и «myapp.herokuapp.com: 5500/socket.io/socket.io.js. Ни один из них не работает. – user3103887
РЕШЕНИЕ !!! Выньте номера портов при нажатии на герочку! – user3103887