Node.js 学习(六)——websocket 组件实现在线聊天室 demo
贫寒豌豆
共 1791字,需浏览 4分钟
· 2017-04-26
Node.js学习(六)——websocket组件实现在线聊天室demo
要实现的功能
- 在线人员列表展示,上下线刷新在线人员列表
- 即时聊天
demo图片
用express新建项目
express -e websocketdemo
下载依赖
在websocketdemo目录下执行命令,在项目下生成node_modules目录
npm install
添加websocket模块
npm install nodejs-websocket
实现代码
项目目录
在view下添加一个chartroom.ejs页面
聊天室
当前登录人:
index.js修改
- 添加跳转到页面的路由
- 添加websocket服务器
- 服务器中3种类型的逻辑处理
- code=0,代表初始化客户端请求。1.将当前连接放入在线人集合中。2.向所有在线人发出更新在线人的消息。
- code=1,代表发送消息。将所有在线人的消息界面追加上当前发送的消息。
- code=2,代表人员列表更新。上线是新增一个在线人员,下线或刷新浏览器是减少一个在线人员。
var express = require('express');
var router = express.Router();
var ws = require("nodejs-websocket");
//存所有人的连接
var onLineUser = new Array();
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
//聊天室页面
router.get('/chartroom', function(req, res, next) {
res.render('chartroom');
});
//聊天服务器8002
var server = ws.createServer(function (conn) {
conn.on("text", function (str) {
var obj = JSON.parse(str);
switch(obj.code){
case 0:initClient(conn);break;
case 1:returnMsg(conn,obj);break;
case 2:userListHandle(conn,obj);break;
}
})
conn.on("close", function (code, reason) {
console.log("关闭连接")
});
conn.on("error", function (code, reason) {
console.log("异常关闭")
});
}).listen(8002)
//发送消息,返回消息
function returnMsg(conn,obj){
if(userList.length != 0){
var returnText = obj.name+" "+obj.date+":\n"+" "+obj.sendContent+"\n";
var returnObj = new Object();
returnObj.code = 1;
returnObj.returnText=returnText;
for(var i=0;i -1) {
this.splice(index, 1);
}
};
module.exports = router;
评论
【深度学习】人人都能看懂的LSTM
熟悉深度学习的朋友知道,LSTM是一种RNN模型,可以方便地处理时间序列数据,在NLP等领域有广泛应用。在看了台大李宏毅教授的深度学习视频后,特别是介绍的第一部分RNN以及LSTM,整个人醍醐灌顶。本文就是对视频的记录加上了一些个人的思考。0. 从RNN说起循环神经网络(Recurrent Neur
机器学习初学者
0
科普:深度学习训练,不同预算GPU选购指南
以下文章来源于微信公众号:DeepHub IMBA作者:Mike Clayton本文仅用于学术分享,如有侵权,请联系后台作删文处理导读购买显卡第一个要考虑的问题是什么?当然是预算。本文提供了不同预算的显卡选购指南,希望能对各位读者有所帮助。在进行机器学习项目时,特别是在处理深度学习和神经网络时,最好
机器学习初学者
0
15种时间序列预测方法总结(包含多种方法代码实现)
向AI转型的程序员都关注了这个号👇👇👇在这篇文章中,我们将深入探讨时间序列预测的基本概念和方法。我们将首先介绍单元预测和多元预测的概念,然后详细介绍各种深度学习和传统机器学习方法如何应用于时间序列预测,包括循环神经网络(RNN)、一维卷积神经网络(1D-CNN)、Transformer、自回归模型(
机器学习AI算法工程
0
Node.js 22 来了!
大厂技术 高级前端 Node进阶点击上方 程序员成长指北,关注公众号回复1,加入高级Node交流群本周 Node.js 22 版本发布了!亮点包括 require() ES 模块、WebSocket 客户端、V8 JavaScript 引擎的更新
程序员成长指北
0
SpringBoot 实现图片防盗链功能
程序员的成长之路互联网/程序员/技术/资料共享 关注阅读本文大概需要 4 分钟。来自:blog.csdn.net/weixin_46157208/article/details/138051737前言出于安全考虑,我们需要后端返回的图片只允许在某个网站内展示,不想被爬虫拿到图片地
程序员的成长之路
0
有意思!一个关于 Spring 历史的在线小游戏
发现 Spring One 的官网上有个好玩的彩蛋,分享给大家!进到Spring One的官网,可以看到右下角有个类似马里奥游戏中的金币图标。点击该金币之后,会打开一个新的页面,进入下面这样一个名为:The History Of Spring 的在线小游戏你可以使用上下左右的方向键来控制Spring
公众号程序猿DD
1
学习开放日:开放复杂科学、AI+X 海量学习资源!
Datawhale干货 学习开放日:4月27-28日1. 什么是学习开放日?以AI为代表的技术突飞猛进,人类知识森林快速扩张,仅凭一人之力不仅难以覆盖,更是难以串联知识线索。唯有像蚂蚁探索最优路径一样,我们才能在信息爆炸的知识森林中探索出更好的方向!因此,今年集智斑图联合国内最
Datawhale
1
一站式解决方案:基于 Arthas 实现服务发现和权限控制
来源:juejin.cn/post/7281849496983994383👉 欢迎加入小哈的星球 ,你将获得: 专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡 / 赠书福利全栈前后端分离博客项目 2.0 版本完结啦, 演示链接
小哈学Java
0