javascript - 调用回调中定义的函数

标签 javascript node.js websocket

我很难理解 Javascript 风格的函数定义。

我有一个 Websocket 服务器:

var WebSocketServer = require('ws').Server,
wss = new WebSocketServer();

wss.on('connection', function (ws) {
  ws.on('message', function (message) {
    console.log('received: %s from client', message);
  })
  ws.send('hello client');
})

我想在调用另一个函数 importantEvent() 时向连接的客户端发送消息。

function importantEvent(message) {
  //send message to the connected client
  ws.send('hello client');
}

importantEvent() 中调用 ws.send() 的好方法是什么?

最佳答案

我使用 EventEmitter 来做类似的事情,以避免强大的模块强度。

// eventManager.js
const EventEmitter = require('events');
class EventManager extends EventEmitter {}
const eventManager = new EventManager();

module.exports = eventManager;

// websocket.js
var eventManager = require('eventManager');
var WebSocketServer = require('ws').Server,
wss = new WebSocketServer();

wss.on('connection', function (ws) {
...
})

function broadcast(data, filter) {
    wss.clients.forEach( ... // depends on library using to web-socket
}

eventManager.on('my-event', function (arg1, arg2) {
    broadcast({arg1, arg2})
});

// in any other files
var eventManager = require('eventManager');

eventManager.emit('my-event', 'hello', 'world');

关于javascript - 调用回调中定义的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52883866/

相关文章:

javascript - Puppeteer 爬行超过 8000 个子页面

javascript - 使用 jQuery AJAX 将数据库默认值添加到下拉列表

node.js - 新的 package.json `exports` 字段不适用于 TypeScript

java - getRemote().sendString(msg, new WriteCallback() {..}) 稳定吗?

android - 无法使用 Android-DDP 连接到 Meteor WebSocket

php - nginx 代理转发和 stream_socket_get_name

javascript - 评估以字符串格式给出的数学表达式

javascript - 什么时候在 Node.js 中使用 eventEmitter?

node.js - 范围错误 : "port" argument must be >= 0 and < 65536

javascript - 将服务器端存储的 javascript 文件添加到 html (node.js)