基于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 相关文章推荐
jQuery插件开发的五种形态小结
Mar 04 Javascript
JavaScript包装对象使用详解
Jul 09 Javascript
学习JavaScript事件流和事件处理程序
Jan 25 Javascript
浅谈javascript中的constructor
Jun 08 Javascript
JQuery中解决重复动画的方法
Oct 17 Javascript
jQuery实现点击关注和取消功能
Jul 03 jQuery
利用node.js+mongodb如何搭建一个简单登录注册的功能详解
Jul 30 Javascript
微信小程序实现MUI数字输入框效果
Jan 31 Javascript
JS实现马赛克图片效果完整示例
Apr 13 Javascript
微信小程序 确认框的实现(附代码)
Jul 23 Javascript
VUE实时监听元素距离顶部高度的操作
Jul 29 Javascript
vue实现tab栏点击高亮效果
Aug 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
配置最新的PHP加MYSQL服务器
2006/10/09 PHP
php download.php实现代码 跳转到下载文件(response.redirect)
2009/08/26 PHP
单一index.php实现PHP任意层级文件夹遍历(Zjmainstay原创)
2012/07/31 PHP
WordPress的文章自动添加关键词及关键词的SEO优化
2016/03/01 PHP
常用一些Javascript判断函数
2012/08/14 Javascript
javascript实现点击提交按钮后显示loading的方法
2015/07/03 Javascript
Angular的$http的ajax的请求操作(推荐)
2017/01/10 Javascript
基于JavaScript实现带缩略图的轮播效果
2017/01/12 Javascript
JS实现的Unicode编码转换操作示例
2017/04/28 Javascript
详解JavaScript调用栈、尾递归和手动优化
2017/06/03 Javascript
webuploader实现上传图片到服务器功能
2018/08/16 Javascript
详解如何在Node.js的httpServer中接收前端发送的arraybuffer数据
2018/11/11 Javascript
JavaScript禁用右键单击优缺点分析
2019/01/20 Javascript
layui使用label标签的方法
2019/09/14 Javascript
解决LayUI数据表格复选框不居中显示的问题
2019/09/25 Javascript
v-slot和slot、slot-scope之间相互替换实例
2020/09/04 Javascript
基于JavaScript实现简单抽奖功能代码实例
2020/10/20 Javascript
Vue 实例中使用$refs的注意事项
2021/01/29 Vue.js
Python自动化构建工具scons使用入门笔记
2015/03/10 Python
python文件操作之目录遍历实例分析
2015/05/20 Python
Python常用的爬虫技巧总结
2016/03/28 Python
Python采用Django开发自己的博客系统
2020/09/29 Python
Golang与python线程详解及简单实例
2017/04/27 Python
python中实现数组和列表读取一列的方法
2018/04/03 Python
python Kmeans算法原理深入解析
2019/08/23 Python
TensorFlow 显存使用机制详解
2020/02/03 Python
Python2.7:使用Pyhook模块监听鼠标键盘事件-获取坐标实例
2020/03/14 Python
python 在sql语句中使用%s,%d,%f说明
2020/06/06 Python
PUMA澳大利亚官方网站:德国运动品牌
2018/10/19 全球购物
荷兰美妆护肤品海淘网站:Beautinow(中文)
2020/11/22 全球购物
会计专业毕业生自荐信范文
2013/12/20 职场文书
最新茶叶店创业计划书
2014/01/14 职场文书
面包店的创业计划书范文
2014/01/16 职场文书
儿童生日会策划方案
2014/05/15 职场文书
领导班子个人对照检查材料(群众路线)
2014/09/26 职场文书
测量JavaScript函数的性能各种方式对比
2021/04/27 Javascript