0

Node.js、socket.io、および Express を使用して、2 つのルート間で単純なメッセージを送信しようとしています。

ここに私の高速ルートがあります:

app.get('/', routes.index);
app.get('/controller', routes.controller);

サーバー側の私のsocket.io:

io.sockets.on('connection', function (socket) {
    socket.emit('test', {});
      socket.on('clicked', function(data) {
      console.log('clicked received');
      socket.emit('do_stuff', data);
    });
});

私のインデックスページで:

<script>
var socket = io.connect('http://localhost:3001');
socket.on('test', function(data) {
  console.log('test received');
});
socket.on('do_stuff', function(data) {
  console.log('should do stuff here');
});
</script>

私のコントローラーページで:

  <button id='the_button'>Click Me</button>

  <script>
    var socket = io.connect('http://localhost:3001'); 
    socket.on('test', function(data) {
      console.log('test recieved');
    });
    $(function() {
      $("#the_button").click(function(e) {
        socket.emit("clicked", {});
    });
  </script>

ボタンがコントローラーページでクリックされたときに、「do_stuff」がインデックスページでいくつかの機能をトリガーするようにしたいと思います。ただし、socket.on('do_stuff',...)イベントが発生することはありません。どうすればこれを修正できますか?

4

2 に答える 2

0

イベントハンドラからイベントを発行する前に、ソケットが接続状態であることを確認してください!!

于 2013-02-07T19:53:47.713 に答える
0

socket.broadcast.emut代わりに使用したいsocket.emit

socket.emitメッセージを送信したソケットにのみ送信します

違いについては、こちらを参照してください: io.sockets.emit とブロードキャストの違いは何ですか?

于 2013-02-04T22:21:44.850 に答える