0

クライアントをサーバーに接続しようとしていますが、クロムは常にそれを出力します

GET http://localhost:30653/socket.io/socket.io.js 404 (見つかりません)

どこが問題なのかわからない…

Express バージョンは「4.13.4」で、socket.io バージョンは「1.4.5」です。

そして、ここに私のコードがあります:

app.js

var express = require('express');
var hbs = require('hbs');
var app=express();
var server = require('http').createServer(app);
var io = require('socket.io').listen(server);

io.on('connection',function(socket){
    console.log("connected");
    socket.emit('open');
});

app.set('port', process.env.PORT || 30653);
app.set('view engine','html');
app.engine('html',hbs.__express);
app.use(express.static('public'));
app.get('/',function(req,res){
    res.render('chatroom');
});
app.listen(app.get('port'),function(){
    console.log('this server is listening on port:'+app.get('port'));
});

クライアント:

$(function(){
    var socket = io.connect('http://localhost:30653');
    socket.on('open',function(){
        console.log("open")
    });
    socket.on('system',function(json){
        console.log("system");
    });
});

どんな助けでも大歓迎です!私はそれを非常に感謝します!

4

2 に答える 2

3

ここに示すように、サーバーを作成する方法がapp.listen(...)必要だと思います: http://socket.io/docs/#using-with-express-3/4。あなたがやっている方法では、socket.io は適切なサーバーにフックされていないため、socket.io.js ファイルを提供していません。server.listen(...)

できますがapp.listen()、ここで別の初期化手順に従う場合のみ: http://socket.io/docs/#using-with-the-express-framework

于 2016-03-21T06:52:20.663 に答える
0

app.js の app.use(express.static('public')); 行の後に、以下のコード行を使用する必要があります。

  app.use("/lib", express.static(path.join(__dirname,'node_modules'))); 

次に、以下のようにクライアントにインポートします

   <script src='/lib/socket.io/socket.io.js' type='text/javascript'></script>
于 2016-03-21T07:03:53.380 に答える