基于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 .ajax 在IE下卡死问题的解决方法
Oct 26 Javascript
从数组中随机取x条不重复数据的JS代码
Dec 24 Javascript
jQuery链式操作实例分析
Nov 16 Javascript
AngularJS中isolate scope的用法分析
Nov 22 Javascript
Vue.js中数据绑定的语法教程
Jun 02 Javascript
AngularJS 异步解决实现方法
Jun 12 Javascript
React-Native左右联动List的示例代码
Sep 21 Javascript
Swiper 4.x 使用方法(移动端网站的内容触摸滑动)
May 17 Javascript
基于vue实现可搜索下拉框定制组件
Mar 26 Javascript
详解如何在vue项目中使用eslint+prettier格式化代码
Nov 10 Javascript
Vue中Table组件Select的勾选和取消勾选事件详解
Mar 19 Javascript
Javascript通过控制类名更改样式
May 24 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分页显示制作详细讲解
2006/12/05 PHP
phpmyadmin中配置文件现在需要绝密的短语密码的解决方法
2007/02/11 PHP
PHP session有效期问题
2009/04/26 PHP
基于PHP中的常用函数回顾
2013/07/11 PHP
ThinkPHP之M方法实例详解
2014/06/20 PHP
php抽象类使用要点与注意事项分析
2015/02/09 PHP
深入解析PHP中foreach语句控制数组循环的用法
2015/11/30 PHP
利用PHP如何写APP接口详解
2016/08/23 PHP
php正则表达式基本知识与应用详解【经典教程】
2017/04/17 PHP
php实现不通过扩展名准确判断文件类型的方法【finfo_file方法与二进制流】
2017/04/18 PHP
php生成复杂验证码(倾斜,正弦干扰线,黏贴,旋转)
2018/03/12 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
2019/12/18 PHP
静态的动态续篇之来点XML
2006/12/23 Javascript
jQuery.extend()、jQuery.fn.extend()扩展方法示例详解
2014/05/08 Javascript
jQuery中siblings()方法用法实例
2015/01/08 Javascript
jQuery中的siblings用法实例分析
2015/12/24 Javascript
js 连续赋值的简单实现
2016/06/13 Javascript
javascript回到顶部特效
2016/07/30 Javascript
详解jQuery中的事件
2016/12/14 Javascript
基于jQuery实现顶部导航栏功能
2016/12/27 Javascript
JavaScript ES6中export、import与export default的用法和区别
2017/03/14 Javascript
electron实现qq快捷登录的方法示例
2018/10/22 Javascript
10个最受欢迎的 JavaScript框架(推荐)
2019/04/24 Javascript
vue elementui el-form rules动态验证的实例代码详解
2019/05/23 Javascript
element表格翻页第2页从1开始编号(后端从0开始分页)
2019/12/10 Javascript
详解三种方式在React中解决绑定this的作用域问题并传参
2020/08/18 Javascript
[54:09]RNG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
Python3通过Luhn算法快速验证信用卡卡号的方法
2015/05/14 Python
Python之NumPy(axis=0 与axis=1)区分详解
2019/05/27 Python
python实现随机漫步方法和原理
2019/06/10 Python
python 函数的缺省参数使用注意事项分析
2019/09/17 Python
MIS软件工程师的面试题
2016/04/22 面试题
运动会稿件200字
2014/02/07 职场文书
生物制药专业自我鉴定
2014/02/19 职场文书
施工安全标语
2014/06/07 职场文书
企业群众路线教育实践活动心得体会
2014/11/03 职场文书