4

Express 3.0 と組み合わせた socket.io 1.0 の動作例はどこにありますか? /socket.io/socket.io.js現在問題は、index.html で見つからないこと です。

var express = require('express')
var http = require('http')
var app = express()

app.configure(function () {
    app.set('port', process.env.PORT || 80);
});


// setup express server
var serv = http.Server(app);

// setup socket io 
var io = require('socket.io')(serv);
app.get('/', function (req, res) {
    res.sendfile(__dirname + '/index.html');
});

io.sockets.on('connection', function (socket) {
    socket.emit('news', { hello: 'world' });
    socket.on('my other event', function (data) {
        console.log(data);
    });
});

serv.listen(app.get('port'), function () {
    console.log("Express server listening on port " + app.get('port'));
});

これは私のindex.htmlにあるものです

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Socket Example</title>
    <script src="/socket.io/socket.io.js"></script>
    <script>
        var socket = io.connect('/');
        socket.on('news', function (data) {
            console.log(data);
            socket.emit('my other event', { my: 'data' });
        });
    </script>
</head>
<body>
    <b>Socket IO</b>
</body>

これは私がpackage.jsonに持っているものです

{
  "name": "socketio",
  "version": "0.0.1",
  "private": true,
  "dependencies": {
      "express": "3.0",
      "socket.io": "LearnBoost/socket.io"
  },
  "scripts": {
    "start": "node app.js"
  }
}
4

3 に答える 3

0

connect/express アプリをノード http.Server にラップする必要があります。

app.listen() メソッドはこれに便利なメソッドで、サーバーを返します。

var io = require('socket.io');
var app = connect();
var server = app.listen(80);
io.listen(server);

または以下は同等です。

var io = require('socket.io');
var http = require('http');
var app = connect();
var server = http.createServer(app);
server.listen(80);
io.listen(server);

Connect 2 / Express 3 では、http.server を起動せずにアプリを作成できるため、起動または発行するように構成する必要があります。他のオプションがない場合は、これで軌道に戻るはずです。

// where this = express();
this.server = this.listen(this.config.port);
console.log('[ ' + this.constants.name + ' ] worker listening on port ' + this.config.port);
this.emit('listen', this.server);

server.io および Node を使用した Express 3 の場合: REF

var app = require('express')()
  , server = require('http').createServer(app)
  , io = require('socket.io').listen(server);
于 2013-09-19T09:23:35.807 に答える