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 年月日联动实现核心代码
Dec 21 Javascript
JavaScript中SQL语句的应用实现
May 04 Javascript
jQuery实现图片信息的浮动显示实例代码
Aug 28 Javascript
用jquery写的一个万年历(自写)
Jan 20 Javascript
JS随机打乱数组的方法小结
Jun 22 Javascript
浅谈jQuery this和$(this)的区别及获取$(this)子元素对象的方法
Nov 29 Javascript
js判断手机号是否正确并返回的实现代码
Jan 17 Javascript
Vue.js如何优雅的进行form validation
Apr 07 Javascript
详解Vue文档中几个易忽视部分的剖析
Mar 24 Javascript
通过说明与示例了解js五种设计模式
Jun 17 Javascript
微信小程序开发(一):服务器获取数据列表渲染操作示例
Jun 01 Javascript
解决Vue 给mapState中定义的属性赋值报错的问题
Jun 22 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正则表达式(regar expression)
2011/09/10 PHP
PHP获取当前url的具体方法全面解析
2013/11/26 PHP
ThinkPHP3.1新特性之对分组支持的改进与完善概述
2014/06/19 PHP
Codeigniter控制器controller继承问题实例分析
2016/01/19 PHP
php+Ajax无刷新验证用户名操作实例详解
2019/03/04 PHP
php实现根据身份证获取精准年龄
2020/02/26 PHP
JS中简单的实现像C#中using功能(有源码下载)
2007/01/09 Javascript
关于图片验证码设计的思考
2007/01/29 Javascript
location.search在客户端获取Url参数的方法
2010/06/08 Javascript
JQuery给元素添加/删除节点比如select
2013/04/02 Javascript
javascript中的startWith和endWith的几种实现方法
2013/05/07 Javascript
关闭页面window.location事件未执行的原因及解决方法
2014/09/01 Javascript
jquery实现超简洁的TAB选项卡效果代码
2015/08/28 Javascript
跟我学习javascript的prototype,getPrototypeOf和__proto__
2015/11/17 Javascript
Ajax分页插件Pagination从前台jQuery到后端java总结
2016/07/22 Javascript
JavaScript数据结构之二叉树的删除算法示例
2017/04/13 Javascript
实例详解vue.js浅度监听和深度监听及watch用法
2018/08/16 Javascript
jQuery-App输入框实现实时搜索
2020/11/19 jQuery
Python编程语言的35个与众不同之处(语言特征和使用技巧)
2014/07/07 Python
Python中规范定义命名空间的一些建议
2016/06/04 Python
Python实现公历(阳历)转农历(阴历)的方法示例
2017/08/22 Python
Android分包MultiDex策略详解
2017/10/30 Python
Python实现的自定义多线程多进程类示例
2018/03/23 Python
python创建与遍历List二维列表的方法
2019/08/16 Python
python集成开发环境配置(pycharm)
2020/02/14 Python
python中random.randint和random.randrange的区别详解
2020/09/20 Python
HTML5的标签的代码的简单介绍 HTML5标签的简介
2012/05/28 HTML / CSS
高中军训感言400字
2014/02/24 职场文书
期末学生评语大全
2014/04/24 职场文书
2015初中团支部工作总结
2015/07/21 职场文书
中学校园广播稿
2015/08/18 职场文书
Python爬取用户观影数据并分析用户与电影之间的隐藏信息!
2021/06/29 Python
Python爬虫中urllib3与urllib的区别是什么
2021/07/21 Python
【TED出品】天梯非主流开心游1700 划水骑士
2022/03/31 魔兽争霸
分享python函数常见关键字
2022/04/26 Python
Java多线程并发FutureTask使用详解
2022/06/28 Java/Android