基于socket.io和node.js搭建即时通信系统


Posted in Javascript onJuly 30, 2014

使用socket.io和nodejs搭建websocket服务器端

socket.io不仅可以搭建客户端的websocket服务,而且支持nodejs服务器端的websocket。

下面让我来介绍一下怎么安装配置nodejs.

进入http://nodejs.org/#download下载msi文件。一直点next安装。最后文件会自动安装在C:\nodejs目录下。

安装完成后,会自动配置环境环境变量。如果没有自动配置,自己手动在path处加上 ;C:\nodejs\。

安装完成后,需要配置npm来管理node.js的模块。

在window下安装npm需要安装git。

安装完git后,打开gitbush。执行下面几步:

git config --system http.sslcainfo /bin/curl-ca-bundle.crt

git clone --recursive git://github.com/isaacs/npm.git

cd npm

node cli.js install npm -gf

第一个是设置不会有任何提示,第二步会到github上下载npm会有下载文件和进度,第四步是安装npm到node.js会复制几个文件cmd文件和mode_modules文件夹到nodejs目录。

这样就配置好了npm。

如果需要安装什么模块直接输入npm install ***。

没有npm的或者windows用户可以使用github下载socket.io并且放入到node_modules文件夹中,具体配置可以参考文章:《nodejs教程:配置nodejs.exe的windows目录结构》

nodejs安装socket.io

使用node插件管理包,运行下面的命令就可以安装成功socket.io

npm install socket.io

用socket.io 实现的一个例子

客户端代码:

<html> 

<head> 

  <title></title> 

  <script src="../js/socket.io.client.js"></script> 

  <script type="text/javascript"> 

    function doit() { 

      var socket = io.connect('http://localhost'); 

      socket.on('news', function (data) {//接收到服务器发送过来的名为'new'的数据 

        console.log(data.hello);//data为应服务器发送过来的数据。 

        socket.emit('my new event', { my:'new data' });//向服务器发送数据,实现双向数据传输 

      }); 

      socket.on('other', function (data) {//接收另一个名为'other'数据, 

        console.log(data.hello); 

        socket.emit('event1', { my:'other data' }); 

      }); 

    } 

  </script> 

</head> 

<body> 

<button id='btn' onclick="doit()">click me</button> 

</body> 

</html>

socket.io.client.js可以https://github.com/LearnBoost/socket.io-client下载到本地,在<script src="..">指向本机的js库。

服务器用nodejs实现

server2.js

var http= require('http'), io= require('socket.io'), express= require('express'); 

var app = express.createServer(), io = io.listen(app); 

app.listen(80); 

io.sockets.on('connection', function (socket) { 

 socket.emit('news', { hello: 'world' });//监听,一旦客户端连接上,即发送数据,第一个参数'new'为数据名,第二个参数既为数据 

 socket.on('my other event', function (data) {//捕获客户端发送名为'my other event'的数据 

  console.log(data.my); 

 }); 

 socket.emit('other', { hello: 'other world' });//发送另一个数据 

 socket.on('evnet1', function (data) {//捕获另外一个数据 

  console.log(data.my); 

 }); 

});

测试结果,客户端可正常显示

服务器端显示结果:

C:\java\Nodejs>node server2.js

注:代码要和npm_module在同一个目录下。不然会出现找不到socket.io module的错误。

Javascript 相关文章推荐
js 替换
Feb 19 Javascript
jQuery源码分析-01总体架构分析
Nov 14 Javascript
jquery插件jquery倒计时插件分享
Dec 27 Javascript
js data日期初始化的5种方法
Dec 29 Javascript
简述AngularJS相关的一些编程思想
Jun 23 Javascript
javascript判断复选框是否选中的方法
Oct 16 Javascript
JavaScript中误用/g导致的正则test()无法正确重复执行的解决方案
Jul 27 Javascript
AngularJS入门教程之数据绑定用法示例
Nov 01 Javascript
CSS+jQuery实现简单的折叠菜单
Dec 20 Javascript
Node.js JSON模块用法实例分析
Jan 04 Javascript
Node.js操作系统OS模块用法分析
Jan 04 Javascript
Smartour 让网页导览变得更简单(推荐)
Jul 19 Javascript
基于Jquery+Ajax+Json实现分页显示附效果图
Jul 30 #Javascript
JQuery实现表格动态增加行并对新行添加事件
Jul 30 #Javascript
jQuery修改CSS伪元素属性的方法
Jul 30 #Javascript
教你在heroku云平台上部署Node.js应用
Jul 30 #Javascript
浅析Node在构建超媒体API中的作用
Jul 30 #Javascript
JS实现图片无间断滚动代码汇总
Jul 30 #Javascript
使用jquery.upload.js实现异步上传示例代码
Jul 29 #Javascript
You might like
一个连接两个不同MYSQL数据库的PHP程序
2006/10/09 PHP
phpmyadmin 访问被拒绝的真实原因
2009/06/15 PHP
Swoole-1.7.22 版本已发布,修复PHP7相关问题
2015/12/31 PHP
php+redis实现消息队列功能示例
2019/09/19 PHP
根据地区不同显示时间的javascript代码
2007/08/13 Javascript
说说JSON和JSONP 也许你会豁然开朗
2012/09/02 Javascript
Javascript根据指定下标或对象删除数组元素
2012/12/21 Javascript
放弃用你的InnerHTML来输出HTML吧 jQuery Tmpl不详细讲解
2013/04/20 Javascript
下拉列表选择项的选中在不同浏览器中的兼容性问题探讨
2013/09/18 Javascript
JavaScript使用yield模拟多线程的方法
2015/03/19 Javascript
javascript判断变量是否有值的方法
2015/04/20 Javascript
javascript作用域、作用域链(菜鸟必看)
2016/06/16 Javascript
浅谈AngularJS中ng-class的使用方法
2016/11/11 Javascript
JS实现的几个常用算法
2016/11/12 Javascript
Web前端开发之水印、图片验证码
2016/11/27 Javascript
详解Angular2组件之间如何通信
2017/06/22 Javascript
浅谈webpack4.x 入门(一篇足矣)
2018/09/05 Javascript
WebStorm无法正确识别Vue3组合式API的解决方案
2021/02/18 Vue.js
Python实现的数据结构与算法之双端队列详解
2015/04/22 Python
Python urllib、urllib2、httplib抓取网页代码实例
2015/05/09 Python
Python3读取UTF-8文件及统计文件行数的方法
2015/05/22 Python
Python中的集合介绍
2019/01/28 Python
Python实现计算对象的内存大小示例
2019/07/10 Python
python类的实例化问题解决
2019/08/31 Python
python实现图片转换成素描和漫画格式
2020/08/19 Python
如何使用scrapy中的ItemLoader提取数据
2020/09/30 Python
英国办公用品商店:Office Outlet
2018/04/04 全球购物
Araks官网:纽约内衣品牌
2020/10/15 全球购物
电子商务专业学生的自我鉴定
2013/11/28 职场文书
农村党支部先进事迹
2014/01/14 职场文书
工作保证书范文
2014/04/29 职场文书
党的群众路线教育实践方案
2014/05/11 职场文书
投资公司董事长岗位职责
2015/04/16 职场文书
撤诉申请书法院范本
2015/05/18 职场文书
交通处罚决定书
2015/06/24 职场文书
关于感恩的歌曲整理(8首)
2019/08/14 职场文书