文章目录

  • 自定义事件发射器channel
  • 定义服务器server并实现发射自定义事件逻辑。
  • 代码:
  • 启动服务
  • 模拟客户连接服务

自定义事件发射器channel

  • 类型:join
    client通过telnet加入后,聊天室后,记录client信息并注册broadcast和leave事件。
  • 监听类型:broadcast
    接受到内容后,输出内容到已注册客户端。
  • 监听类型:leave
    当客户端退出后,移除自定义监听事件。

定义服务器server并实现发射自定义事件逻辑。

备注:不支持中文。

代码:

创建文件test.js

var events = require('events')
var net = require('net')
var channel = new events.EventEmitter()
channel.clients = {}
channel.subscriptions = {}channel.on('join', (id, client) => {channel.clients[id] = client;channel.subscriptions[id] = function(senderId, message){if(id != senderId){channel.clients[id].write(message)}}channel.on('broadcast', channel.subscriptions[id])channel.on('leave', ()=>{channel.removeListener('broadcast', channel.subscriptions[id])})
})var server = net.createServer(client=>{var id = client.remoteAddress+':'+client.remotePort;console.log('createServer',id);//发射join事件channel.emit('join', id, client)client.on('data', data => {//发射broadcast事件channel.emit('broadcast', id, data.toString('utf-8'))})client.on('close', ()=>{//发射leave事件channel.emit('leave', id)})
})server.listen(8888)

启动服务

node test.js

模拟客户连接服务

打开两个客户端,输入如下命令

telnet 127.0.0.1 8888

EventEmitter练习之--匿名聊天室相关推荐

  1. 将“闲聊么”改造成匿名聊天室

    关于闲聊么 之前的文章早已有介绍,详见"闲聊么"给你的网站加上一个聊天框. 不过啊,它有一个致命的弱点,必须注册登录才能参与聊天.对于小网站来说,很是鸡肋.一般人看到这么麻烦就放弃 ...

  2. flask android app socketio加解密 匿名加密聊天室 不被任何官方非官方机构个人监视的匿名聊天室!!! 想聊什么就聊什么!

    www.miracleseller.xyz:860/ http://www.miracleseller.xyz:860/ app聊天室(匿名加密 不被任何人任何机构监视的app): http://ww ...

  3. TCP 聊天室v2 实现多人匿名聊天 C++,linux系统下

    使用select IO复用实现多人匿名聊天室(linux系统下) 功能:用户可发送消息,并同时能看到其他用户发的消息,用户输入over退出 实现思路: 服务端仅作为消息的中转方,使用select管理所 ...

  4. 基于python实现的聊天室(客户端:一)窗口设置

    前言 就是自己想用python做一个聊天室,然后看看socket库,websocket库,有点底层,然后也会用到协程的东西,不是很明白,一时间也不知道怎么写,因为前面使用过了flask-socketi ...

  5. 基于python实现的聊天室(服务端)

    前言 就是自己想用python做一个聊天室,然后看看socket库,websocket库,有点底层,然后也会用到协程的东西,不是很明白,一时间也不知道怎么写,然后就用了封装好的python-socke ...

  6. 一款开源的匿名聊天工具,太牛了

    今天推荐的这个项目是「anonymous-chat-room」,一个基于 livekit 和 Next.js 的匿名聊天室,可以进行文字.语音聊天,并支持语音录屏. 特点 部署简单:前端支持直接部署到 ...

  7. PHP匿名在线聊天室系统源码 自适应PC+WAP端

    介绍: PHP匿名在线聊天室系统源码 自适应PC+WAP端 可发语音.图片 修改数据库config\settings.php可拿去搭建专门跟客户聊天的网站 网盘下载地址: http://kekewl. ...

  8. PHP匿名在线聊天室系统源码

    PHP匿名在线聊天室系统源码,自适应PC+WAP端,可发 语音.图片.带有三套主题模板,完美可用. [完整源码链接] PHP匿名在线聊天室系统源码.zip-PHP文档类资源-CSDN文库

  9. 【聊天室系统源码】多语言海外版匿名中英文聊天室开发

    随着国际化发展的潮流和趋势,越来越多的各国友人通过社交软件在一起聊天,交流和学习,但是各国的专用社交软件都有一定的地域保护,不会让其他地区的网友随意注册和使用,当然我们国家也不让随意使用海外的社交软件 ...

  10. 从0搭建在线聊天室,只需4步!

    Vol. 5 聊天室不同于单聊和群聊,是一类集成了多种 IM 功能一体的大规模实时消息分发系统.在跨入新世纪的2000年,聊天室作为新型的即时通讯场景迅速在年轻人群体中火热起来,"网易聊天室 ...

最新文章

  1. [新手学Go]GO语言闭包的使用
  2. 汉语转拼音pinyin4j
  3. 【APICloud系列|35】APICLloud开源官方模块
  4. 笔记本AutoCAD启动时闪退怎么办_戴尔笔记本电脑开不了机如何解决【解决方法】...
  5. 在CSDN写文章头部生成标题目录
  6. 并且确定已经识别出了主要的HTML5技术风险
  7. CV Code | 本周计算机视觉新出开源代码汇总(含目标检测、深度估计、视频识别、网络加速算法等)...
  8. k8s极简史:K8s多集群技术发展的历史、现状与未来
  9. Javascript 监控键盘输入事件
  10. 原生ES-Module在浏览器中的尝试
  11. 搭建hadoop集群,从安装虚拟机开始直到hadoop成功搭建
  12. c语言中各种符号的意思。
  13. 解决mysql插入中文出现错误ERROR 1366 (HY000): Incorrect string value: ‘\x80\x85\xEF\xBC\x8C\xE6...‘ for column
  14. grafana绘图配置查询变量+多级变量联动
  15. autojs 开发文档集合
  16. 双屏显示html vga,官方数据:一台计算机连接到两台显示器,双屏显示(VGA,HDMI)指南...
  17. 建议收藏 | 数据化、信息化、数字化、智能化到底都是指什么?彼此有什么联系?
  18. 有感“IBM将大规模裁员11万人左右,幅度高达26%”
  19. JavaWeb EMS员工信息管理系统(servlet+jsp版本)
  20. (深度学习论文精读总结)You Only Look Once: Unified, Real-Time Object Detection

热门文章

  1. 《零基础入门学习Python》第019讲:函数:我的地盘听我的
  2. manjaro kde 20.2安装
  3. 完美解决No files matched pattern
  4. 从零开始之uboot、移植uboot2017.01(三、lowlevel_init)
  5. MySQL单表数据查询之分组数据查询之旅
  6. 游戏中学会写代码:这些编程学习网站不容错过
  7. 版权微talk | 两部门发文,拟出台相关方案,全面加强知识产权保护
  8. 瑞士央行2022年巨亏1320亿瑞士法郎
  9. php中strpos什么意思,PHP使用strpos()和strrpos()定位文本
  10. 移动应用跨平台框架江湖将现终结者?速来参拜来自Facebook的React Native