2017-08-08 103 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標識符和從服務器抓住消息。