websocket:用语服务器端主动向客户端推送消息

本例基于koa框架编写用例:服务器端需要安装相关模块 koa koa-socket co等

  1. 服务器端脚本:(需要安装相关模块 koa koa-socket co等)
  2. //服务端
  3. const Koa = require( 'koa' )
  4. const IO = require( 'koa-socket' )
  5. const co = require( 'co' )
  6.  
  7. const app = new Koa()
  8. const io = new IO({
  9. namespace:"mysocket",
  10. ioOptions:{
  11. path:'/restapi/websocketstock'
  12. }
  13. })
  14. const TIME = 3000; //定时向客户端发送消息
  15. let TimerId = null;
  16.  
  17. io.use( co.wrap( function *( ctx, next ) {
  18. let start = new Date()
  19. yield next()
  20. console.log( `response time: ${ new Date() - start }ms` )
  21. }))
  22.  
  23. // io.use( ... );
  24.  
  25. io.on("connection",function(){ //连接成功
  26. console.log("successfully connect to websocket");
  27. });
  28.  
  29. //定时向客户端推送消息
  30. function sendToClient(){
  31. TimerId = setInterval(function(){
  32. io.broadcast('stockchallenge', {"userNum":parseInt(Math.random()*100)});
  33. },TIME);
  34. }
  35.  
  36. //监控客户端发来的消息源
  37. io.on('messageClient', ( ctx, data ) => {
  38. console.log("来自客户端的消息");
  39. console.log(data);
  40. })
  41.  
  42. io.attach( app );
  43. sendToClient();
  44.  
  45. app.listen( 3004 );
  46. console.log("app is listening at 3004");

  

客户端脚本:在客户端,websocket需要浏览器支持才能使用,不过有许多js脚本对浏览器做了兼容性封装,本例以socket.io为例,

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Document</title>
  6. </head>
  7. <body>
  8. <div>users count: <span id="count"></span></div>
  9. <script src="js/socket.io.js"></script>
  10. <script>
  11.  
  12. var socket = io.connect( "http://机器名:3004/mysocket",{
  13. path:"/restapi/websocketstock"
  14. });
  15.  
  16. socket.on("connect",function(){
  17. console.log("连接成功");
  18. });
  19.  
  20. var sessionId;
  21. //监控服务器端的消息 stockchallenge
  22. socket.on("stockchallenge", function (data) {
  23. console.log("来自服务器端的消息",data);
  24. document.getElementById("count").innerHTML = data.userNum;
  25.  
  26. });
  27.  
  28. </script>
  29. </body>
  30. </html>

  

基于node的websocket示例的更多相关文章

  1. 基于Node.js + WebSocket 的简易聊天室

    代码地址如下:http://www.demodashi.com/demo/13282.html Node.js聊天室运行说明 Node.js的本质就是运行在服务端的JavaScript.Node.js ...

  2. Websocket - Websocket原理(握手、解密、加密)、基于Python实现简单示例

    一.Websocket原理(握手.解密.加密) WebSocket协议是基于TCP的一种新的协议.WebSocket最初在HTML5规范中被引用为TCP连接,作为基于TCP的套接字API的占位符.它实 ...

  3. 基于node.js 的 websocket的移动端H5直播开发

    这一篇介绍一下基于node.js 的 websocket的移动端H5直播开发, 下载文章底部的源码,我是用vscode打开, 首先在第一个终端运行 npm run http-server 这个指令是运 ...

  4. 基于Node.js的实时推送 juggernaut

    基于Node.js的实时推送 juggernaut Juggernaut 基于 Node.js 构建.为浏览器和服务器端提供一个实时的连接,可在客户端和服务器端进行数据的实时推送,适合多角色游戏.聊天 ...

  5. 转:php使用websocket示例详解

    原文来自于:http://www.jb51.net/article/48019.htm 这篇文章主要介绍了php使用websocket示例,需要的朋友可以参考下   下面我画了一个图演示 client ...

  6. 基于Node.js的强大爬虫 能直接发布抓取的文章哦

    基于Node.js的强大爬虫 能直接发布抓取的文章哦 基于Node.js的强大爬虫能直接发布抓取的文章哦!本爬虫源码基于WTFPL协议,感兴趣的小伙伴们可以参考一下 一.环境配置 1)搞一台服务器,什 ...

  7. WebSocket 示例

    websocket应运而生 在WebSocket规范提出之前,开发人员若要实现带有即时通信.实时数据.订阅推送等功能的应用实时性较强的功能,经常会使用的解决方法是 Comet. Comet是一种服务器 ...

  8. 基于node.js人脸识别之人脸对比

    基于node.js人脸识别之人脸对比 Node.js简介 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境. Node.js 使用了一个事件驱动.非阻塞式 I/O ...

  9. 基于 Node.js 的服务器自动化部署搭建实录

    基于 Node.js 的服务器自动化部署搭建实录 在服务器上安装 Node.js 编写拉取仓库.重启服务器脚本 配置 Github 仓库的 Webhook 设置 配置 Node.js 脚本 其他问题 ...

随机推荐

  1. 在MAC OS X中默认的Web共享目录

    在Mac OS X中可以很方便的通过开启"Web共享"启用Apache服务:设置方法如下: 打开"系统设置偏好(System Preferences)" -&g ...

  2. #翻译#原文来自Database.System.Concepts(6th.Edition.2010)2.6Relational Operations,原文作者Abraham Silberschaz , Henry F. Korth , S. Sudarshan

    2.6关系操作 所有的过程关系查询语言都提供一组操作,这些操作可以应用于单个关系或一对关系.这些操作具有良好的和期望的属性,它们的结果总是一个单一的关系.这个属性允许一个以模块化的方式组合其中的几个操 ...

  3. 统计学习方法——CART, Bagging, Random Forest, Boosting

    本文从统计学角度讲解了CART(Classification And Regression Tree), Bagging(bootstrap aggregation), Random Forest B ...

  4. 【bzoj1103】【POI2007】【大都市】(树状数组+差分)

    在经济全球化浪潮的影响下,习惯于漫步在清晨的乡间小路的邮递员Blue Mary也开始骑着摩托车传递邮件了.不过,她经常回忆起以前在乡间漫步的情景.昔日,乡下有依次编号为1..n的n个小村庄,某些村庄之 ...

  5. NDK各个版本链接

    ndk_r15c (July 2017) Windows 32-bit : https://dl.google.com/android/repository/android-ndk-r15c-wind ...

  6. Django 1.10中文文档-执行查询

    Django 1.10中文文档: https://github.com/jhao104/django-chinese-doc 只要创建好 数据模型, Django 会自动为生成一套数据库抽象的API, ...

  7. python之路第四篇(基础篇)

    一.冒泡算法实现: 方法一: li = [13,33,12,80,66,1] print li for m in range(4): num1 = li[m] num2 = li[m+1] if nu ...

  8. 入坑IT十年(二)技术以外

    上一篇博客里提到:技术越来越简单,发布后不久,就看到<技术并不是越来越简单>,这显然是打擂台来了. 技术究竟是不是越来越简单?其实这个问题,要看你究竟是以什么角度来思考这个问题.我们可以举 ...

  9. MyEclipse的JQuery.min.js报错红叉解决办法

    MyEclipse的JQuery.min.js报错红叉解决办法 1.选中报错的jquery文件"jquery-1.2.6.min.js".2.右键选择 MyEclipse--> ...

  10. C语言判断电脑的大、小端机

    #include int main() { int x = 0x1234; if (char(x) == 0x34)  {   printf("小端机!\n");  }  else ...