0

socket.ioでcoffeescriptを使用しようとしています。

io = socketio.listen(server);
// handle incoming connections from clients
io.sockets.on('connection', function(socket) {
    // once a client has connected, we expect to get a ping from them saying what room they want to join
    socket.on('room', function(room) {
        socket.join(room);
    });
});

// now, it's easy to send a message to just the clients in a given room
room = "abc123";
io.sockets.in(room).emit('message', 'what is going on, party people?');

// this message will NOT go to the client defined above
io.sockets.in('foobar').emit('message', 'anyone in this room yet?'); 

io.sockets.inを正しくコンパイルできません。

この問題を解決するにはどうすればよいですか?

4

1 に答える 1

1

あなたの質問では、コンパイラエラーがあると述べていますが、コメントではそうではないと言っています。ある場合は、コーヒースクリプトコードも投稿する必要があります:)

コーヒースクリプトに次のようなものがあると仮定しています。

io = socketio.listen server

io.sockets.on 'connection', ->
    socket.on 'room', ->
        socket.join room

room = "abc123"
io.sockets.in(room).emit "message", "foobar"

io.sockets.in("foobar").emit "message", "barbaz"

コンパイルするもの

io = socketio.listen(server);

io.sockets.on('connection', function() {
  return socket.on('room', function() {
    return socket.join(room);
  });
});

room = "abc123";

io.sockets["in"](room).emit("message", "foobar");

io.sockets["in"]("foobar").emit("message", "barbaz");

コメントに記載されているように、次の 2 行は JavaScript で同等です。

io.sockets["in"](room).emit("message", "foobar");
io.sockets.in(room).emit("message", "foobar); 

これは、お気に入りの JavaScript コンソールを開いて確認できます。

> var test = { foo: "bar" }
> test.foo
'bar'
> test["foo"]
'bar'
于 2013-03-15T11:27:29.930 に答える