Nodejs websocket入门

websocket

2011年技术文档

http://www.ibm.com/developerworks/cn/web/1112_huangxa_websocket/index.html

浏览器端接口:

https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API

WebSockets.org站点:http://www.websockets.org/

认识websocket

http://www.html5rocks.com/en/tutorials/websockets/basics/

http://javascript.ruanyifeng.com/htmlapi/websocket.html

HTTP协议是一种无状态协议,服务器端本身不具有识别客户端的能力,必须借助外部机制,比如session和cookie,才能与特定客户端保持 对话。这多多少少带来一些不便,尤其在服务器端与客户端需要持续交换数据的场合(比如网络聊天),更是如此。为了解决这个问题,HTML5提出了浏览器的WebSocket API

WebSocket的主要作用是,允许服务器端与客户端进行全双工(full-duplex)的通信。举例来说,HTTP协议有点像发电子邮件,发 出后必须等待对方回信;WebSocket则是像打电话,服务器端和客户端可以同时向对方发送数据,它们之间存着一条持续打开的数据通道。

WebSocket协议完全可以取代Ajax方法,用来向服务器端发送文本和二进制数据,而且还没有“同域限制”。

nodejs Demo安装

https://github.com/websockets/ws

来自

http://www.html5rocks.com/en/tutorials/websockets/basics/

Server Side Implementations

从 https://github.com/websockets/ws 下载以后, 解压后到目标目录, 执行

npm install --save ws

进行安装。

遇到报错 Refusing to install hapi as a dependency of itself:

http://stackoverflow.com/questions/27267707/npm-warn-install-refusing-to-install-hapi-as-a-dependency-of-itself

通过修改 package.json 中 name名称解决。 例如 ws-test

到 example文件夹下, 运行node server.js结果报错:Cannot find module ‘xxx‘ 问题解决

通过如下方法解决:

http://blog.csdn.net/wmsjlihuan/article/details/19816389

Cannot find module ‘xxx‘ 问题解决

使用npm install -g ‘xxx‘ 之后仍然报 
Cannot find module ‘xxx‘ 错误,可以通过设置环境变量来解决;

export NODE_PATH=/usr/local/lib/node_modules/  
echo $NODE_PATH

运行结果

[email protected]:/home/share/ws-master/ws-master/examples/serverstats$ node server.js

started client interval
stopping client interval
started client interval
stopping client interval

页面不断刷新数据,很快! 这些内容都是由后台间隔200ms推送到前台。

代码如下:

server

var WebSocketServer = require(‘../../‘).Server
  , http = require(‘http‘)
  , express = require(‘express‘)
  , app = express.createServer();

app.use(express.static(__dirname + ‘/public‘));
app.listen(8080);

var wss = new WebSocketServer({server: app});
wss.on(‘connection‘, function(ws) {
  var id = setInterval(function() {
    ws.send(JSON.stringify(process.memoryUsage()), function() { /* ignore errors */ });
  }, 100);
  console.log(‘started client interval‘);
  ws.on(‘close‘, function() {
    console.log(‘stopping client interval‘);
    clearInterval(id);
  });
});

client

<!DOCTYPE html>
<html>
  <head>
    <style>
      body {
        font-family: Tahoma, Geneva, sans-serif;
      }

      div {
        display: inline;
      }
    </style>
    <script>
      function updateStats(memuse) {
        document.getElementById(‘rss‘).innerHTML = memuse.rss;
        document.getElementById(‘heapTotal‘).innerHTML = memuse.heapTotal;
        document.getElementById(‘heapUsed‘).innerHTML = memuse.heapUsed;
      }

      var host = window.document.location.host.replace(/:.*/, ‘‘);
      var ws = new WebSocket(‘ws://‘ + host + ‘:8080‘);
      ws.onmessage = function (event) {
        updateStats(JSON.parse(event.data));
      };
    </script>
  </head>
  <body>
    <strong>Server Stats</strong><br>
    RSS: <div id=‘rss‘></div><br>
    Heap total: <div id=‘heapTotal‘></div><br>
    Heap used: <div id=‘heapUsed‘></div><br>
  </body>
</html>

评价

websocket属于新事物, 浏览器支持度有差异。

如果考虑老旧浏览器,可以使用开源commet框架, pushlet:

http://www.ibm.com/developerworks/cn/web/wa-lo-comet/index.html

对于只需要服务器推送消息的情况, 可以使用SSE

http://server.ctocio.com.cn/181/13158181.shtml

http://www.html5rocks.com/en/tutorials/eventsource/basics/

时间: 2024-10-03 18:40:20

Nodejs websocket入门的相关文章

WebSocket入门教程(五)-- WebSocket实例:简单多人聊天室

from:https://blog.csdn.net/u010136741/article/details/51612594 [总目录] WebSocket入门教程--大纲 [实例简介] 本文,我们通过nodejs和javascript实现一个网页聊天室的demo.主要包括,聊天,改用户名,查看其他用户在线状态的功能.大致流程为,用户访问网页,即进入聊天状态,成为新游客,通过底部的输入框,可以输入自己想说的话,点击发布,信息呈现给所有在聊天的人的页面.用户可以实时修改自己的昵称,用户离线上线都会

nodejs快速入门

目录: 编写第一个Node.js程序: 异步式I/O和事件循环: 模块和包: 调试. 1. 编写第一个Node.js程序: Node.js 具有深厚的开源血统,它诞生于托管了许多优秀开源项目的网站—— github.和大多数开源软件一样,它由一个黑客发起,然后吸引了一小拨爱好者参与贡献代码.一开始它默默无闻,靠口口相传扩散,直到某一天被一个黑客媒体曝光,进入业界视野,随后便有一些有远见的公司提供商业支持,使其逐步发展壮大. 用 Node.js 编程是一件令人愉快的事情,因为你将开始用黑客的思维和

Spring WebSocket初探2 (Spring WebSocket入门教程)&lt;转&gt;

See more: Spring WebSocket reference整个例子属于WiseMenuFrameWork的一部分,可以将整个项目Clone下来,如果朋友们有需求,我可以整理一个独立的demo出来. 接上一篇:Spring WebSocket初探1 (Spring WebSocket入门教程) WebSocket前端准备 前端我们需要用到两个js文件:sockjs.js和stomp.js SockJS:SockJS 是一个浏览器上运行的 JavaScript 库,如果浏览器不支持 W

nodejs的入门案例

1.命令行工具 node -v          版本 node -e         eval script(执行eval方法)  例如:node -e "console.log('测试')"; node             直接进入编译模式 nodejs的入门案例

nodejs的入门简介

1.概念 nodejs不是一种独立的语言,也和php.java..net即是开发语言也是平台不同,其也不是javascript的框架,不能和Extjs相提并论.其是将javascript运行在服务端的开发平台[开发平台就是一个供程序员开发软件的软件.其实也就是一个工具(如:微软VS,JAVA一般是Eclipse……)而已,可以编辑和执行程序员写的开发代码语言,从而变成人们平时使用的软件(如QQ.MSN.游戏……)] 2.作用 javascript是由客户端产生,Node.js是为网络而生. 具有

前端走向全栈,Nodejs快速入门视频教程

<前端走向全栈,nodejs快速入门> Nodejs架构的特点,快速掌握Nodejs的开发1.关于JS的几问题.wmv2.Node 是什么.wmv3.关于NODE 轻内核.wmv4.轻内核补充.wmv5.NODE中的web编程模型.wmv6.NODE的单线程.wmv 下载地址 原文地址:http://blog.51cto.com/13824124/2131598

nodejs websocket 聊天应用

前端一直是一块充满惊喜的土地,不仅是那些富有创造性的页面,还有那些惊赞的效果及不断推出的新技术.像node.js这样的后端开拓者直接将前端人员的能力扩大到了后端.瞬间就有了一统天下的感觉,来往穿梭于前后端之间代码敲得飞起,从此由前端晋升为'前后端'. 图片来自G+ 本文将使用Node.js加web socket协议打造一个网页即时聊天程序,取名为HiChat,中文翻过来就是'嗨聊',听中文名有点像是专为寂寞单身男女打造的~ 其中将会使用到express和socket.io两个包模块,下面会有介绍

02 nodejs命令参数(NodeJS基础入门)

声明:本文章可供有一定js基础的朋友参考nodejs入门,本文未讲解nodejs的安装,如有需要的同学可以加QQ3382260752找我,进行交流学习. 建议使用开发软件:webstorm或hbuilder软件. 1.打开命令窗口 输入node,进入node环境.2. 在命令行中可以输入: var a=10;var b=20;function add(a,b){return a+b};add(a,b);然后回车 将调用add函数,在控制台打印结果:30 3.可以直接继续调用add(50,30),

nodejs+websocket聊天工具

该聊天工具,使用nodejs起服务,websocket前端页面,聊天工具,,可以有任意多的人数参与聊天,里面的用户ID为模拟ID. 先上图 文件夹结构, 1.安装ws模块,npm install ws 2.web.js文件,是Nodejs后端代码 var WebSocketServer = require('ws').Server, wss = new WebSocketServer({ port: 8181 }); //var client1 = null,client2=null,clien