我在哪里可以找到socket.io 1.0的工作示例?

时间:2013-09-19 09:02:09

标签: javascript node.js express socket.io

在哪里可以找到socket.io 1.0与express 3.0结合使用的实例?目前问题是我在index.html中找不到/socket.io/socket.io.js

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"
  }
}

3 个答案:

答案 0 :(得分:2)

您遇到的问题是您决定使用socket.io 1.0未完成的未完成版本。它还没有正式发布(或者它本来是在npm)。我建议你坚持使用Socket.IO的“稳定”版本。

如果你想使用Socket.IO 1.0,因为新的engine.io传输系统我建议你看一下Primus https://github.com/primus/primus用普通接口包装socket.io,engine.io,sockjs等等和一个插件系统。您可以使用此插件系统通过使用engine.io转换器和一些插件轻松构建您自己的Socket.IO 1.0。以下是使用Primus + Engine.IO创建Socket.IO 工作克隆的示例https://gist.github.com/3rd-Eden/6113494

答案 1 :(得分: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);

连接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的快递3:REF

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

答案 2 :(得分:0)

您可以检查具有完整socket.io v1.0实现的存储库。它虽然是快递v4.0。

https://github.com/theoctal/livenote