2013-12-15 2 views
1

Я борюсь с приложением 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 файла.

+0

Вы не используете правильный URL для загрузки 'socket.io.js'. Если это не проблема, проверьте консоль браузеров, чтобы увидеть, появляются ли какие-либо ошибки. – robertklep

+0

спасибо. Я действительно пробовал «/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

+1

РЕШЕНИЕ !!! Выньте номера портов при нажатии на герочку! – user3103887

ответ

0

Веб-узлы ранее не поддерживались в Heroku. Теперь он поддерживается. Для этого вам нужно установить флаг.

https://devcenter.heroku.com/articles/heroku-labs-websockets

Даже после установки флага, и перезапустить приложение, штепсельные розетки не работают, просьба уточнить точную ошибку, что вы получаете.

Смежные вопросы