2017-08-08 87 views
1

我很难理解当服务器“发送”的数据,并在客户端“获得”数据,反之亦然。差“上”和“emmit”在服务器端和客户端socket.io

的代码是他们的榜样

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,并通过io它emmit它。脚本中也一样。所以问题是服务器和客户端如何“互相交谈”?以及emmiton之间的区别是什么?

+0

'emit'发送消息时,'on'接收事件时,不是很明显? – Bergi

+0

您是否知道服务器和客户端通常如何工作以及套接字是什么? – Bergi

+0

怎么办?(服务器和客户端),但并非如此插座,我不明白他们是怎么说话,你可以看到他们使用事件“新邮件”这两个,为什么他们不互相冲突? –

回答

1

每当我们使用插座IO,我们使用发射发送服务器的消息与给定的消息识别符和服务器现在通过一些消息标识符发射的消息回复客户说X,那么我们使用方法并传递X标识符和从服务器抓住消息。