0

node.jsとsocket.ioを使ってページを作りたいです。

ページ内には 2 つのボタンがあり、そのうちの 1 つをクリックすると、animation-duration を定義する変数が変更されます (ここでは CSS アニメーション コードは省略します)。

別の Web ブラウザーで同じページを開いていずれかのボタンをクリックすると、両方の Web ページで変更が見られることを期待しています。socket.on('chat', function(data){???});2 つのページが相互に通信するように内にコードを記述する方法がわかりません。

クライアント側:

//socket.io コード --

<script type="text/javascript" charset="utf-8">

    var socket = io.connect('http://localhost:3000');

    socket.on('chat', function  (data)
    {
         function change_position(data)
          {
           document.getElementById("animation1").style.WebkitAnimationDuration=data;
          }
    });

 </script>

.....

//アクション -

<body>
<button id="1b" type="button" style="position:absolute; left:377px; top:220px;" value="2s"; onclick="change_position(value)"> - 1 - </button>

<button id="2b" type="button" style="position:absolute; left:477px; top:220px;" value="15s"; onclick="change_position(value)"> - 2 - </button>
</body>

サーバ側:

var io = require('socket.io'),
  connect = require('connect');

var app = connect().use(connect.static('public')).listen(3000);
var chat_room = io.listen(app);

chat_room.sockets.on('connection', function (socket) {

  socket.on('chat', function  (data) {
    chat_room.sockets.emit('chat', data);
  });
});
4

2 に答える 2

2

メッセージをすべてのクライアント/ソケットに伝播させたい場合は、サーバーに次のようなものが必要です。

chat_room.sockets.on('connection', function (socket) {

  socket.on('chat', function  (data) {
    socket.broadcast.emit('chat', data);
    socket.emit('chat',data);
  });

});

ブロードキャストは他のすべてのソケットを送信するため、この行socket.emit('chat',data);を使用すると、メッセージの送信者にもメッセージを送り返すことができます。

もちろん、その行を省略して、メッセージ送信ロジックをクライアントで処理することもできます。つまり、メッセージをサーバーに送信した直後に必要な変更を行う JavaScript コードを追加します。

于 2013-01-02T12:40:45.213 に答える
0

socket.emit('message', data) を使用して、クライアントで発行できます。次に、サーバーで chat_room.socket.on('message', data) を使用して取得します。chat_room.sockets.emit('message', data) を使用してクライアントに送信します。

于 2013-01-02T12:39:04.407 に答える