服务器和客户端在socket.io中的“on”和“emmit”不同

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

代码是在他们的例子

在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)); }) }); 

正如你可以在index.js看到的那样,它会创build一个chat message并使用io来emmit它。 脚本中也是一样的。 所以问题是服务器和客户如何“交谈”? 和emmit什么不同呢?

每当我们使用套接字io,我们使用发射服务器发送一个给定的消息标识符的消息,现在服务器通过发送消息与一些消息标识符说x ,然后我们使用该方法,并传递x标识符,并从消息服务器。