基于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常用自定义公共函数汇总
Jan 15 Javascript
JQuery中阻止事件冒泡几种方式及其区别介绍
Jan 15 Javascript
PHP结合jQuery实现的评论顶、踩功能
Jul 22 Javascript
js HTML5多图片上传及预览实例解析(不含前端的文件分割)
Aug 26 Javascript
js判断文件格式及大小的简单实例(必看)
Oct 11 Javascript
利用jQuery对无序列表排序的简单方法
Oct 16 Javascript
AngularJs 延时器、计时器实例代码
Sep 16 Javascript
video.js 实现视频只能后退不能快进的思路详解
Aug 09 Javascript
React中阻止事件冒泡的问题详析
Apr 12 Javascript
vue.js this.$router.push获取不到params参数问题
Mar 03 Javascript
vue实现购物车的小练习
Dec 21 Vue.js
用javascript制作qq注册动态页面
Apr 14 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 stream_get_meta_data返回值
2013/09/29 PHP
摘自织梦CMS的HTTP文件下载类
2015/08/08 PHP
smarty的section嵌套循环用法示例
2016/05/28 PHP
PHP空值检测函数与方法汇总
2017/11/19 PHP
PHP多线程模拟实现秒杀抢单
2018/02/07 PHP
js取消单选按钮选中并判断对象是否为空
2013/11/14 Javascript
js购物车实现思路及代码(个人感觉不错)
2013/12/23 Javascript
js性能优化技巧
2015/11/29 Javascript
详解Bootstrap创建表单的三种格式(一)
2016/01/04 Javascript
JQuery 设置checkbox值二次无效的解决方法
2016/07/22 Javascript
js实现文字截断功能
2016/09/14 Javascript
jquery对象和DOM对象的相互转换详解
2016/10/18 Javascript
微信小程序 开发之快递查询功能的实现
2017/01/09 Javascript
jQuery实现对网页节点的增删改查功能示例
2017/09/18 jQuery
JS判断数组是否包含某元素实现方法汇总
2020/06/24 Javascript
原生JS实现音乐播放器
2021/01/26 Javascript
[00:28]DOTA2北京网鱼队选拔赛
2015/04/08 DOTA
Python删除指定目录下过期文件的2个脚本分享
2014/04/10 Python
跟老齐学Python之私有函数和专有方法
2014/10/24 Python
python求列表交集的方法汇总
2014/11/10 Python
在python中用url_for构造URL的方法
2019/07/25 Python
Python Django实现layui风格+django分页功能的例子
2019/08/29 Python
numpy 返回函数的上三角矩阵实例
2019/11/25 Python
keras slice layer 层实现方式
2020/06/11 Python
Python3安装模块报错Microsoft Visual C++ 14.0 is required的解决方法
2020/07/28 Python
GitHub上值得推荐的8个python 项目
2020/10/30 Python
浅析HTML5页面元素及属性
2021/01/20 HTML / CSS
英国体育器材进口商店:UK Sport Imports
2017/03/14 全球购物
高中英语演讲稿范文
2014/04/24 职场文书
实习报告评语
2014/04/26 职场文书
个人欠款担保书
2014/05/20 职场文书
毕业生实习期转正自我鉴定
2014/09/26 职场文书
公务员个人年终总结
2015/02/12 职场文书
离职证明范本
2015/06/12 职场文书
Python实现天气查询软件
2021/06/07 Python
台式电脑蓝牙适配器怎么安装?台式电脑蓝牙适配器安装教程
2022/04/08 数码科技