node.js基于express使用websocket的方法


Posted in Javascript onNovember 09, 2017

本文实例讲述了node.js基于express使用websocket的方法。分享给大家供大家参考,具体如下:

这个效果我也是翻了好长时间的资料,测试才成功的,反正成功,大家看看吧

首先你需要安装socket.io模块

npm install socket.io --save

然后打开express的app.js将模块引入,在12行左右的

var app = express();

下面添加两行

var server = require('http').Server(app);
var io = require('socket.io')(server);

然后在20多行里面添加

app.use(function(req, res, next){
 res.io = io;
 next();
});

由于本人不喜欢从www里面启动,所以在app.js里面又添加了几行代码,添加到底部的倒数第二行以上

var port = 3000;
app.set('port', port);
server.listen(port);

这就开始监听3000端口了

这样,准备工作已经完成了,然后开始进行示例

用官方的示例代码测试,可以直接写到app.js里面

io.on('connection', function (socket) {
 socket.emit('news', { hello: 'world1' });
 socket.on('my other event', function (data) {
  console.log(data);
 });
});

服务端的准备工作已经完成,在客户端页面首先将socket.js文件引入

<script src='javascripts/socket.io-1.4.5.js'></script>
var socket = io.connect("//localhost:3000");
socket.on('news', function (data) {
  console.log(data);
  alert(data);
  socket.emit('my other event', { my: 'data' });
});

然后打开页面测试一下

如果想只在一个页面里服务端发送信息,可以这么写

router.get('/', function(req, res, next) {
  //只有当前页面可以获得
  res.io.on('connection', function(socket) {
    socket.emit('news', {
      hello: 'world'
    });
    socket.on('my other event', function(data) {
      console.log(data);
    });
  });
  //所有页面都可以获得
  var io = require("../app").io;
  io.emit("news",{hello:"myworld"});
  res.render("pclogin.ejs", {});
});

希望本文所述对大家nodejs程序设计有所帮助。

Javascript 相关文章推荐
javascript[js]获取url参数的代码
Oct 17 Javascript
深入理解Javascript动态方法调用与参数修改的问题
Dec 10 Javascript
基于Jquery实现键盘按键监听
May 11 Javascript
IE9+已经不对document.createElement向下兼容的解决方法
Sep 14 Javascript
JavaScript类型系统之基本数据类型与包装类型
Jan 06 Javascript
详解Vue生命周期的示例
Mar 10 Javascript
微信小程序 本地数据存储实例详解
Apr 13 Javascript
解决JS内存泄露之js对象和dom对象互相引用问题
Jun 25 Javascript
AngularJs点击状态值改变背景色的实例
Dec 18 Javascript
vue上传图片到oss的方法示例(图片带有删除功能)
Sep 27 Javascript
Vue中img的src是动态渲染时不显示的解决
Nov 14 Javascript
关于Js中new操作符的作用详解
Feb 21 Javascript
angular2系列之路由转场动画的示例代码
Nov 09 #Javascript
使用ef6创建oracle数据库的实体模型遇到的问题及解决方案
Nov 09 #Javascript
基于vue配置axios的方法步骤
Nov 09 #Javascript
微信小程序倒计时功能实现代码
Nov 09 #Javascript
js与jQuery实现的用户注册协议倒计时功能实例【三种方法】
Nov 09 #jQuery
微信小程序获取手机号授权用户登录功能
Nov 09 #Javascript
jQuery.Sumoselect插件实现下拉复选框效果
Nov 09 #jQuery
You might like
php类
2006/11/27 PHP
PHP实现根据数组的值进行分组的方法
2017/04/20 PHP
如何运行/调试你的PHP代码
2020/10/23 PHP
网页加载时页面显示进度条加载完成之后显示网页内容
2012/12/23 Javascript
jQuery事件绑定.on()简要概述及应用
2013/02/07 Javascript
JavaScript设置IFrame高度自适应(兼容各主流浏览器)
2013/06/05 Javascript
Javascript加载速度慢的解决方案
2014/03/11 Javascript
js怎么判断flash swf文件是否加载完毕
2014/08/14 Javascript
理解javascript回调函数
2014/12/28 Javascript
DOM基础教程之使用DOM控制表格
2015/01/20 Javascript
thinkphp 表名 大小写 窍门
2015/02/01 Javascript
JS获取文件大小方法小结
2015/12/08 Javascript
微信JSAPI支付操作需要注意的细节
2017/01/10 Javascript
Vue中的混入的使用(vue mixins)
2018/06/01 Javascript
layui 表格的属性的显示转换方法
2018/08/14 Javascript
微信小程序如何调用新闻接口实现列表循环
2019/07/02 Javascript
原生JS利用transform实现banner的无限滚动示例代码
2020/06/15 Javascript
Python中的各种装饰器详解
2015/04/11 Python
python3中dict(字典)的使用方法示例
2017/03/22 Python
pymysql 开启调试模式的实现
2019/09/24 Python
python 变量初始化空列表的例子
2019/11/28 Python
python return逻辑判断表达式实现解析
2019/12/02 Python
Python如何使用字符打印照片
2020/01/03 Python
python实现扫雷小游戏
2020/04/24 Python
Python命名空间及作用域原理实例解析
2020/08/12 Python
CSS3教程(10):CSS3 HSL声明设置颜色
2009/04/02 HTML / CSS
CSS3实现多背景展示效果通过CSS3定位多张背景
2014/08/10 HTML / CSS
使用CSS3制作饼状旋转载入效果的实例
2015/06/23 HTML / CSS
美国唇部护理专家:Sara Happ
2019/06/19 全球购物
如何现实servlet的单线程模式
2014/08/05 面试题
初一英语教学反思
2014/01/11 职场文书
给儿子的表扬信
2014/01/15 职场文书
先进个人事迹材料
2014/01/25 职场文书
学校爱心捐款倡议书
2014/05/13 职场文书
2014年学校党建工作总结
2014/11/11 职场文书
2014年行政执法工作总结
2014/12/11 职场文书