socket.io框架学习
socket.io框架是用于网页中实时通信,一般用于开发聊天室等实时性较强的系统模块
一开始从官网http://socket.io/上down了一个demo下来,这个demo里面只有基本的收发消息的功能,然后我在这个基础上加上了用户设置昵称、私信用户、上线下线及当前在线人数提醒功能
github地址:https://github.com/FujiBilly/SocketIO.git
为了更方便的调试代码,决定在现在的基础上添加gulp构建工具的辅助功能
主要是gulp-livereload和gulp-nodemon这两个功能,其中gulp-livereload主要是当文件发生改动时对网页进行刷新,gulp-nodemon主要是当文件发生改动时重新启动服务端,即分别对前后端进行重启。
gulp-livereload
为配合gulp-livereload功能的实现,需先在浏览器中 安装LiveReload拓展程序 和 在Sublime Text中安装LiveReload包:
浏览器主要指Chorme浏览器,LiveReload拓展程序可在https://chrome.google.com/webstore/detail/livereload/jnihajbhpnppcggbcgedagnkighmdlei上获取。
Sublime Text中,先用快捷键Ctrl+Shift+P,输入List Packages,查看已安装的外包清单,若无则安装LiveReload包,安装完成之后还LiveReload服务还未启动,需用快捷键Ctrl+Shift+P,出现“LiveReload:Enable/disable plugins”,按回车键,然后在下拉列表中找到“Enable - Simple Reload”,继续按回车键即可启动,且每次开启Sublime Text都要启动一次LiveReload服务。
gulp-nodemon
nodemon命令可以直接在终端下像node命令那样使用,而我是在gulpfile.js文件中使用nodemon的,代码如下
nodemon({script: 'index.js'});
相当于终端下的 nodemon index.js 命令
注意:在安装使用gulp-nodemon的时候遇到一个大坑,若是你全局安装了nodemon后,你在项目文件夹中会发现nodemon失效了,这是因为全局安装了nodemon后它只是监视全局路径下文件的改动,而不是你项目文件夹中的文件改动,所以不小心全局安装了nodemon之后可以在/usr/local/lib/node_modules/nodemon/下把该文件夹删除,还有/usr/local/bin/nodemon文件也一并删掉。但有时候还是不行,会出现[nodemon] Internal watch failed: watch (your watching path) ENOSPC这种错误,最后才醒悟,Linux监视文件的改动需要有权限,所以在启动命令之前加上sudo即可。
之后觉得单单的几个文件使得结构不太清晰,所以在原来功能的基础上整合了Express框架!!!
整合的时候有几个要注意的地方:
/socket.io/socket.io.js 在ejs中会引用到这个文件,而这个文件是存放在node_modules/socket.io-client/socket.io.js这里的,所以需要将其copy到public目录下;
配置 gulpfile.js 时,nodemon模块所用的启动命令应该是 node ./bin/www 而不是 node app.js ;
由于socket.io创建对象时需要一个服务作为参数,而这个服务正是 /bin/www 中的 var server = http.createServer(app),所以将io服务端的监听和广播放在该文件中;
/bin/www是不能像其他js文件用 module.exports 方式将对象公开出来的,所以获取在线用户的路由只能放到该文件下才能获取到名单列表对象;
socket.io框架学习相关推荐
- 数据库、MongoDB/Mongoose、cookie与session、密码加密、图片处理、web Socket和Socket.IO框架
一.传统数据库 数据库就是存储数据的,那么存储数据就用txt就行了啊,为什么要有数据库? 理由1: 数据库有行.列的概念,数据有关系,数据不是散的. 老牌数据库,比如MySQL.SQL Server. ...
- koa+mysql+vue+socket.io全栈开发之web api篇
原文地址:koa+mysql+vue+socket.io全栈开发之web api篇 目标是建立一个 web QQ的项目,使用的技术栈如下: 后端是基于koa2 的 web api 服务层,提供curd ...
- .NET下使用socket.io随笔记录
一.问题背景 目前公司在互联网产品上需要程序与前端部分要进行一个实时交互,在进行一定程度上的选型后,决定使用socket.io框架进行一个实践,算是公司的一个新的 尝试,也算是给自己增加增长见闻,由于 ...
- Socket.io解压缩
项目中的数据请求,因为是交易平台,数据的实时性要求比较高,从之前的轮询请求获取数据要改成数据的推送. 用的Socket.io 框架 . 因为数据量比较大,如果直接传输会对带宽造成影响.后台把数据压缩后 ...
- Socket.IO介绍:支持WebSocket、用于WEB端的即时通讯的框架
一.基本介绍 WebSocket是HTML5的一种新通信协议,它实现了浏览器与服务器之间的双向通讯.而Socket.IO是一个完全由JavaScript实现.基于Node.js.支持WebSocket ...
- 【Spring Boot】集成Netty Socket.IO通讯框架
服务端 1 @Configuration 2 public class NettySocketConfig { 3 4 private static final Logger logger = Log ...
- 在yog2框架中自建模块,以实现socket.io与express共享session中间件
导引 最近遇到了一个需要在yog2框架中增加websocket服务的案子,此文主要讲在案子过程中碰到的一些问题和解决方案 前言 一.如果你只是想要解决socket.io与express共享解析sess ...
- socket.io php 聊天室,WebSocket学习(一)——基于socket.io实现简单多人聊天室
前言 什么是Websocket呢? 我们都知道在Http协议中,客户端与服务器端的通信是靠客户端发起请求,然后服务器端收到请求再进行回应,这个过程中,客户端是主动的,服务器端是被动的.Websocke ...
- java nio 传统标准io socket 和nio socket比较与学习
在计算机系统中,最不可靠的就是网络请求,我们通过服务器端给客户端echo信息(客户端请求什么信息服务端就返回给客户端什么信息).比较两种socket io的优劣. 标准io socket: 服 ...
最新文章
- 在c++中,如果派生类没有重写基类中对应virtual函数会怎样?
- 开源 CI/CD 构建框架 TekTon 的深入剖析
- 年度总结 | 2020 Flink 学习路线总结
- python寻峰算法_现代法谱估计(1)Yule Walker 方程法MATLAB及Python实现
- redolog switch会发生完全检查点还是增量检查点?
- Kotlin中变量不同于Java: var 对val(KAD 02)
- 文件上传之multer
- 一张有转折意义的神秘地图
- 使用eclipse创建我的第一个JSP项目
- MATLAB卷积运算(conv)
- MATLAB仿真任意带宽的窄带信号、宽带信号以及全频带信号
- DMAIC DFSS of 6sigma
- 邂逅你,是我最美的相遇
- Base58算法加密解密(Python实现)
- win10下yolov3训练自己的数据集
- jsp标签与指令总结
- rsyslog服务搭建
- 程序员的5个级别,你属于哪一个等级?
- 外链html怎么添加,网站外链添加如何来做,要注意这些原则
- Android修改默认屏幕亮度
热门文章
- python自动回复机器人手机版_GitHub - HZQHZA/wxpy: Python 写 微信聊天 根据 自动回复 接入机器人 等等.......
- php项目导入其他包,将一个外部项目导入Thinkphp环境中
- 安卓抓包软件_你们要的抓包神器!以及抓包原理
- c语言实现软件锁相环,锁相环系统及锁相环系统的实现方法技术方案
- mysql close 出错_MySQL错误Forcing close of thread的两种解决方法
- UBUNTU下面安装ICE失败记录过程
- eclispe中相关操作
- VB版双语对照制作助手的设计与实现
- MySQL怎么查游戏内邮件附件_怎么查询游戏mysql账号密码
- 两个服务器之间怎么传输大量数据速度快 java socket_千兆网络的传输速度能超过125MB/s么?...