簡體   English   中英

socket io的emit功能如何工作?

[英]How the emit function of socket io works?

在socket.io的官方網站上,我有一個代碼示例,我的疑問是,emit函數將為所有客戶端或僅為連接服務器的客戶端發出事件? 示例代碼:

服務器(app.js):

var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);

server.listen(80);

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

io.on('connection', function (socket) {
  socket.emit('news', { hello: 'world' });
  socket.on('my other event', function (data) {
    console.log(data);
  });
});

客戶端(index.html):

<script src="/socket.io/socket.io.js"></script>
<script>
  var socket = io.connect('http://localhost');
  socket.on('news', function (data) {
    console.log(data);
    socket.emit('my other event', { my: 'data' });
  });
</script>

發出函數將為所有客戶端或僅為在服務器中連接的客戶端發出事件?

在服務器上的代碼示例中:

socket.emit(...)將僅向該特定連接發送一條消息。

io.emit(...)將向所有當前連接的客戶端發送一條消息。

請記住, io.emit()沒有任何神奇的功能,它僅循環訪問所有當前連接的客戶端,並使用其特定的socket對象分別為每個客戶端調用socket.emit() -節省了您必須執行的工作自己編寫代碼。

從客戶端, socket.emit()將向服務器發送一條消息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM