2017-09-17 14 views
-1

私は単純なチャットを構築するためにnode.js、express、socket.io、mongodb、mongoose、mongolab、herokuを使用しています。socket.ioがherokuにロードされていません

すべてがローカルホスト上で(herokuなしで)うまく動作しますが、私がherokuにsocket.io.jsをロードしていないときにアプリケーションをデプロイすると、

https://prnt.sc/gm6fz0

私は約10〜20、他の似質問を読んで、他のバリエーションを試してみましたが、socket.io.jsはまだロードされませんしました。

app.js - サーバ側

var express = require('express'); 
var path = require('path'); 
var favicon = require('serve-favicon'); 
var logger = require('morgan'); 
var cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 
var app = require('express')(); 
var server = require('http').createServer(app); 
var io = require('socket.io')(server); 
var mongoose = require('mongoose'); 
var mongodb = require('mongodb'); 

server.listen(8080); 

var uri = 'mongodb://username:[email protected]:41264/chat'; 

var index = require('./routes/index'); 
var users = require('./routes/users'); 

mongoose.connect(uri, function(err){ 
    if(err) { 
    console.log(err); 
    } else { 
    console.log('connected to mongo db'); 
    } 
}); 

var db = mongoose.connection; 

db.on('error', console.error.bind(console, 'connection error:')); 

db.once('open', function callback() { 

    var chatSchema = mongoose.Schema ({ 
    msg: String, 
    created: {type: String, default: function(){return new Date()}} 
    }); 

    var Chat = mongoose.model('Message', chatSchema); 

    io.on('connection', function(socket){ 
    console.log('a user connected'); 
    var query = Chat.find({}); 
    query.sort({'_id': -1}).limit(10).exec(function(err, docs){ 
     if (err) throw err; 
     console.log('sending old msgs'); 
     socket.emit('load old msgs', docs); 
    }); 

    socket.on('disconnect', function(){ 
     console.log('user disconnected'); 
    }); 
    socket.on('chat', function(msg){ 
     console.log('message: ' + msg); 
     var newMsg = new Chat({ msg: msg }); 
     newMsg.save(function(err){ 
     if(err) throw err; 
     io.emit('chat', msg); 
     }); 
    }); 
    }); 
}); 


app.use(express.static(__dirname + '/public')); 
// view engine setup 
app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'jade'); 

// uncomment after placing your favicon in /public 
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); 
app.use(logger('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(cookieParser()); 
app.use(express.static(path.join(__dirname, 'public'))); 

app.use('/', index); 
app.use('/users', users); 

// catch 404 and forward to error handler 
app.use(function(req, res, next) { 
    var err = new Error('Not Found'); 
    err.status = 404; 
    next(err); 
}); 

// error handler 
app.use(function(err, req, res, next) { 
    // set locals, only providing error in development 
    res.locals.message = err.message; 
    res.locals.error = req.app.get('env') === 'development' ? err : {}; 

    // render the error page 
    res.status(err.status || 500); 
    res.render('error'); 
}); 

module.exports = app; 

global.js - クライアント側herokuに提供されているマニュアルに従って

var socket = io.connect(); 

$('#send-message-btn').click(function() { 
    var msg = $('#message-box').val(); 
    socket.emit('chat', msg); 
    $('#message-box').val(''); 
    return false; 
}); 

socket.on('chat', function (msg) { 
    var dadd = new Date; 
    $('#messages').append($('<time>').text(dadd)); 
    $('#messages').append($('<p>').text(msg)); 
}); 


socket.on('load old msgs', function(docs){ 
    for(var i=0; i < docs.length; i++) { 
    $('#messages').prepend($('<p>').text(docs[i].msg)); 
    $('#messages').prepend($('<time>').text(docs[i].created)); 
    } 
}); 
+0

は、なぜあなたはio.connectにURLアドレスを追加しませんか? –

+0

私はポートとそれなしでそれを追加しようとしました。 socket.io.jsはまだロードされていません –

+0

io.connect()ではなくio()を試してください –

答えて

0

(Socket.ioを使用してアプリを有効にする必要がありますセッションの親和性ノードのクラスタモジュールを使用する場合や、アプリを複数のdynosに拡張する場合は、Socket.ioの複数ノードの指示に従ってください。プロジェクトディレクトリから次のコマンドを実行します。

ベスト
heroku features:enable http-session-affinity 

Daksh Miglani

+0

io.connect()をio()に変更しましたが、まだsocket.io.jsがロードされていないので、そのコマンドを実行しました –

+0

io.connect()とtellを使用します。 –

+1

同じhttp://prntscr.com/gmivrj –

関連する問題