" on"和#34; emmit"在socket.io中的服务器和客户端

时间:2017-08-08 18:03:02

标签: javascript node.js socket.io

我很难理解服务器"发送"数据以及客户" get"数据,反之亦然。

代码在他们的例子中

index.js中为nodejs

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

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

io.on('connection', function(socket){
  console.log('a user connected');

  // create chat message
  socket.on('chat message', function(msg){
    io.emit('chat message', msg);
    console.log('message: ' + msg);
  });

  socket.on('disconnect', function(){
    console.log('user disconnected');
  });
});

http.listen(3000, function(){
  console.log('listening on *:3000');
});

并在脚本中

$( function(){
  'use strict';
  // client side
  console.log("starting chat...");
  var socket = io();


  $('form').submit(function(){
    // call event chat message
    socket.emit('chat message', $('#m').val());
    $('#m').val('');
    return false;
  });

  // create chat message event on client
  socket.on('chat message', function(msg){
    $('#messages').append($('<li>').text(msg));
  })
});

正如您在index.js上看到的那样,它会创建一个chat message并使用它{i} emmit。脚本中也有同样的事情。所以问题是服务器和客户端如何对话&#34;彼此?以及emmiton之间有什么不同?

1 个答案:

答案 0 :(得分:1)

每当我们使用socket io时,我们使用 emit 向服务器发送带有给定消息标识符的消息,服务器现在通过发送带有一些消息标识符的消息来回复客户端 x ,然后我们使用 on 方法并传递 x 标识符并从服务器获取消息。