Javascript 差异“;关于;及;“艾米特”;在socket.io中的服务器和客户端中

Javascript 差异“;关于;及;“艾米特”;在socket.io中的服务器和客户端中,javascript,node.js,socket.io,Javascript,Node.js,Socket.io,我很难理解服务器何时“发送”数据,客户端何时“获取”数据,反之亦然 代码在他们的示例中 在nodejs的index.js中 // 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 + '/i

我很难理解服务器何时“发送”数据,客户端何时“获取”数据,反之亦然

代码在他们的示例中

在nodejs的
index.js

// 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));
  })
});
$(函数(){
"严格使用",;
//客户端
log(“开始聊天…”);
var socket=io();
$('form')。提交(函数(){
//呼叫事件聊天信息
emit('chat message',$('#m').val());
$('m').val('');
返回false;
});
//在客户端上创建聊天消息事件
socket.on('chat message',函数(msg){
$(“#消息”).append($(“
  • ”).text(msg)); }) });

  • 正如您在
    index.js
    上看到的,它创建了一条
    聊天信息
    ,并使用io it
    emmit
    it。脚本中也有同样的内容。所以问题是服务器和客户端如何相互“交谈”?而
    emmit
    上的
    有什么不同呢?

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

    emit
    发送消息,
    on
    接收事件,不是很明显吗?您知道服务器和客户端通常是如何工作的,以及套接字是什么吗?我知道(服务器和客户端),但在套接字中不是这样,我不明白他们是怎么说话的,正如你们看到的,他们都在使用事件“新消息”,为什么他们彼此不冲突?这是对称的。客户端发送的消息在服务器上接收,服务器发送的消息在客户端上接收。它们没有冲突,因为它们有一个方向。那么像POST或GET一样,服务器渲染结果吗?但同时发生?