【发布时间】:2019-10-20 20:24:35
【问题描述】:
我是 Nodejs 的新手,我正在学习从网上下载的代码 sn-ps。我有一个关于聊天应用程序代码的基本问题。
下面是 app.js 的代码(服务器端)
var stream = collection.find().sort().limit(10).stream(); // collection coming from mongoDb
stream.on('data', function (chat) {
socket.emit('chat', chat.content);
});
socket.on('chat', function (msg) {
// code to add into mongoDB
}
上述代码,从 mongoDB 获取记录并发出在客户端捕获的数据,以及一个监听从客户端推送的数据是否插入 DB 的函数。
客户端代码 -
var socket = io();
$('#send-message-btn').click(function () { // this is a button
var msg = $('#message-box').val();
socket.emit('chat', msg);
$('#messages').append($('<p>').text(msg));
$('#message-box').val('');
return false;
});
socket.on('chat', function (msg) {
console.log('adding to message div '+msg);
$('#messages').append($('<p>').text(msg));
});
现在我的问题是,app.js 中的 socket.emit 被client.js 中的socket.on 方法捕获,客户端按钮舔功能中的socket.emit 被服务器端socket.on 捕获。
它是如何工作的?为什么 app.js 的 socket.emit 没有在 app.js 中的 socket.on 方法中捕获,而客户端 js 的 emit 方法没有在客户端 ja 的 socket.on 方法中捕获。
【问题讨论】: