在RequestIO对象中找不到Express.io Room功能

时间:2014-05-25 21:01:23

标签: javascript ajax node.js socket.io express.io

这是我尝试做的事情:

server.js

app = require('express.io')();
app.http().io();

app.get('/', function(req, res) {
    res.sendfile(__dirname + '/client.html');
});

app.put('/create', function(req, res) {
    req.io.route('articles');
});

app.io.route('join', function(req) {
    req.io.join(req.data);
    req.io.room(req.data).broadcast('newUser', {});
});

app.io.route('articles', function(req) {
    var message = {
        message: 'Article created'
    };
    req.io.room(req.data).broadcast('created', message);
    req.io.respond(message);
});

app.listen(3000);

client.html

<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script src="/socket.io/socket.io.js"></script>
<script>
    io = io.connect();

    io.emit('join','articles');

    io.on('created', function(data) {
        alert(data.message);
    });

    io.on('newUser', function(data) {
        alert('New user');
    });

    $.ajax({
        url: 'http://localhost:3000/create',
        data: 'articles',
        type: 'PUT'
    }).done(function(res) {
        alert('AJAX succeded');
    }).fail(function(res) {
        alert('AJAX failed');
    });
</script>

问题是服务器上的这行代码:

req.io.room(req.data).broadcast('created', message);

给出以下错误:

Object #<Object> has no method 'room' at Object.articles

目标是在请求创建&#39;之后向房间广播消息。是,但不是提出请求的客户。我已经使用app.io.room进行广播,但会发送给所有客户,包括提出请求的客户,我不想要。

所以我的问题是,如果它可以完成,那么我做错了什么,但如果它不能,那么关于为什么不好的一点点信息:)

0 个答案:

没有答案