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 相关文章推荐
11款基于Javascript的文件管理器
Oct 25 Javascript
判断多个input type=file是否有已经选择好文件的代码
May 23 Javascript
JS 获取select(多选下拉)中所选值的示例代码
Aug 02 Javascript
用javascript添加控件自定义属性解析
Nov 25 Javascript
jquery通过closest选择器修改上级元素的方法
Mar 17 Javascript
Bootstrap每天必学之附加导航(Affix)插件
Apr 25 Javascript
jQuery Chart图表制作组件Highcharts用法详解
Jun 01 Javascript
微信小程序之数据双向绑定与数据操作
May 12 Javascript
原生js二级联动效果
Jun 20 Javascript
深入理解Vue Computed计算属性原理
May 29 Javascript
详解angular分页插件tm.pagination二次触发问题解决方案
Jul 20 Javascript
详解如何给React-Router添加路由页面切换时的过渡动画
Apr 25 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/10/09 PHP
PHP大批量插入数据库的3种方法和速度对比
2014/07/08 PHP
PHP基于递归实现的约瑟夫环算法示例
2017/08/27 PHP
jQuery表格列宽可拖拽改变且兼容firfox
2014/09/03 Javascript
AngularJS控制器controller正确的通信的方法
2016/01/25 Javascript
node.js中module.exports与exports用法上的区别
2016/09/02 Javascript
jQuery之动画效果大全
2016/11/09 Javascript
一个非常好用的文字滚动的案例,鼠标悬浮可暂停[两种方案任选]
2016/12/01 Javascript
vue实现Input输入框模糊查询方法
2021/01/29 Javascript
基于vue-draggable 实现三级拖动排序效果
2020/01/10 Javascript
JQuery事件委托(适用于给动态生成的脚本元素添加事件)
2020/02/01 jQuery
JS实现网页端猜数字小游戏
2020/03/06 Javascript
jQuery 隐藏/显示效果函数用法实例分析
2020/05/20 jQuery
在Django的URLconf中进行函数导入的方法
2015/07/18 Python
python爬虫框架scrapy实战之爬取京东商城进阶篇
2017/04/24 Python
python实现发送邮件功能代码
2017/12/14 Python
python TCP Socket的粘包和分包的处理详解
2018/02/09 Python
Django Web开发中django-debug-toolbar的配置以及使用
2018/05/06 Python
Python使用Selenium模块实现模拟浏览器抓取淘宝商品美食信息功能示例
2018/07/18 Python
Python面向对象程序设计多继承和多态用法示例
2019/04/08 Python
python实战串口助手_解决8串口多个发送的问题
2019/06/12 Python
Python第三方库的几种安装方式(小结)
2020/04/03 Python
HTML5 placeholder属性详解
2016/06/22 HTML / CSS
HTML5的结构和语义(4):语义性的内联元素
2008/10/17 HTML / CSS
HTML5有哪些新特征
2015/12/01 HTML / CSS
ECCO爱步加拿大官网:北欧丹麦鞋履及皮具品牌
2017/07/08 全球购物
银行实习生的自我评价
2014/01/13 职场文书
学校安全工作制度
2014/01/19 职场文书
高中历史教学反思
2014/02/08 职场文书
大学社团活动总结
2014/04/26 职场文书
党的群众路线教育实践活动自我剖析材料
2014/10/08 职场文书
2015年预备党员自我评价
2015/03/04 职场文书
2015年世界无车日活动总结
2015/03/23 职场文书
银行稽核岗位职责
2015/04/13 职场文书
2015年底工作总结范文
2015/05/15 职场文书
一文搞懂Golang 时间和日期相关函数
2021/12/06 Golang