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网页制作特殊效果用随机数
May 22 Javascript
js function使用心得
May 10 Javascript
推荐20家国外的脚本下载网站
Apr 28 Javascript
JavaScript Memoization 让函数也有记忆功能
Oct 27 Javascript
基于pthread_create,readlink,getpid等函数的学习与总结
Jul 17 Javascript
addEventListener 的用法示例介绍
May 07 Javascript
JavaScript中使用typeof运算符需要注意的几个坑
Nov 08 Javascript
JavaScript中的依赖注入详解
Mar 18 Javascript
jQuery中的Deferred和promise 的区别
Apr 03 Javascript
设置点击文本框或图片弹出日历控件的实现代码
May 12 Javascript
基于Vuejs和Element的注册插件的编写方法
Jul 03 Javascript
vue cli3适配所有端方案的实现
Apr 13 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
使用Curl进行抓取远程内容时url中文编码问题示例探讨
2013/10/29 PHP
如何利用http协议发布博客园博文评论
2015/08/03 PHP
详解ThinkPHP3.2.3验证码显示、刷新、校验
2016/12/29 PHP
php实现微信公众号创建自定义菜单功能的实例代码
2019/06/11 PHP
DIV始终居中的js代码
2014/02/17 Javascript
JavaScript的21条基本知识点
2014/03/04 Javascript
node.js中的fs.symlink方法使用说明
2014/12/15 Javascript
AngularJS使用ng-repeat和ng-if实现数据的删选显示效果示例【适用于表单数据的显示】
2016/12/13 Javascript
微信小程序商城项目之购物数量加减(3)
2017/04/17 Javascript
angularjs中的$eval方法详解
2017/04/24 Javascript
教你用Cordova打包Vue项目的方法
2017/10/17 Javascript
Vue 实现双向绑定的四种方法
2018/03/16 Javascript
Vue单页应用引用单独的样式文件的两种方式
2018/03/30 Javascript
JS跨域请求的问题解析
2018/12/03 Javascript
jQuery添加新内容的四个常用方法分析【append,prepend,after,before】
2019/03/19 jQuery
浅谈vue的第一个commit分析
2020/06/08 Javascript
PHP webshell检查工具 python实现代码
2009/09/15 Python
在Python中使用matplotlib模块绘制数据图的示例
2015/05/04 Python
python如何爬取个性签名
2018/06/19 Python
Python中出现IndentationError:unindent does not match any outer indentation level错误的解决方法
2020/04/18 Python
python paramiko利用sftp上传目录到远程的实例
2019/01/03 Python
Python中py文件转换成exe可执行文件的方法
2019/06/14 Python
Python 使用folium绘制leaflet地图的实现方法
2019/07/05 Python
python实现批量修改服务器密码的方法
2019/08/13 Python
python字符串的拼接方法总结
2019/11/18 Python
CSS3实现千变万化的文字阴影text-shadow效果设计
2016/04/26 HTML / CSS
FILA斐乐中国官方商城:意大利运动品牌
2017/01/25 全球购物
幼儿教师研修感言
2014/02/12 职场文书
研修第一天随笔感言
2014/02/15 职场文书
汽车销售员如何做职业生涯规划
2014/02/16 职场文书
四风问题自我剖析材料
2014/10/07 职场文书
培训通知书模板
2015/04/17 职场文书
分析Netty直接内存原理及应用
2021/06/14 Java/Android
SpringBoot快速入门详解
2021/07/21 Java/Android
解决Laravel使用验证时跳转到首页的问题
2021/11/17 PHP
python flappy bird小游戏分步实现流程
2022/02/15 Python