基于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 相关文章推荐
JavaScript高级程序设计 阅读笔记(七) ECMAScript中的语句
Feb 27 Javascript
使用node.js半年来总结的 10 条经验
Aug 18 Javascript
javascript中hasOwnProperty() 方法使用指南
Mar 09 Javascript
yui3的AOP(面向切面编程)和OOP(面向对象编程)
May 01 Javascript
使用javascript插入样式
Mar 14 Javascript
Node.js中npm常用命令大全
Jun 09 Javascript
关于微信中a链接无法跳转问题
Aug 02 Javascript
基于javascript的Form表单验证
Dec 29 Javascript
文本溢出插件jquery.dotdotdot.js使用方法详解
Jun 22 jQuery
Javascript异步执行不按顺序解决方案
Apr 30 Javascript
基于vue--key值的特殊用处详解
Jul 31 Javascript
vue实现滑动解锁功能
Mar 03 Vue.js
基于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中使用XML
2006/10/09 PHP
php中怎么搜索相关联数组键值及获取之
2013/10/17 PHP
php获取文件内容最后一行示例
2014/01/09 PHP
getimagesize获取图片尺寸实例
2014/11/15 PHP
PHP两种快速排序算法实例
2015/02/15 PHP
Symfony2框架学习笔记之表单用法详解
2016/03/18 PHP
Yii2主题(Theme)用法详解
2016/07/23 PHP
jQuery-Tools-overlay 使用介绍
2012/07/14 Javascript
jQuery层次选择器选择元素使用介绍
2013/04/18 Javascript
jQuery实现的经典滑动门效果
2015/09/22 Javascript
jquery实现全选和全不选功能效果的实现代码【推荐】
2016/05/05 Javascript
angular.js中解决跨域问题的三种方式
2017/07/12 Javascript
js构造函数创建对象是否加new问题
2018/01/22 Javascript
jquery实现联想词搜索框和搜索结果分页的示例
2018/10/10 jQuery
elementUI select组件使用及注意事项详解
2019/05/29 Javascript
使用python实现拉钩网上的FizzBuzzWhizz问题示例
2014/05/05 Python
详细解析Python中__init__()方法的高级应用
2015/05/11 Python
windows下python安装paramiko模块和pycrypto模块(简单三步)
2017/07/06 Python
Python图形绘制操作之正弦曲线实现方法分析
2017/12/25 Python
Face++ API实现手势识别系统设计
2018/11/21 Python
flask 实现上传图片并缩放作为头像的例子
2020/01/09 Python
使用tensorflow根据输入更改tensor shape
2020/06/23 Python
挪威手表购物网站:Klokker
2016/09/19 全球购物
预订全球最佳旅行体验:Viator
2018/03/30 全球购物
俄罗斯香水和化妆品网上商店:NOTINO.ru
2019/12/17 全球购物
某公司Java工程师面试题笔试题
2016/03/27 面试题
为什么需要版本控制
2016/10/28 面试题
大学生村官任职感言
2014/01/09 职场文书
代理协议书范本
2014/04/22 职场文书
服务行业演讲稿
2014/09/02 职场文书
2014预防青少年违法犯罪工作总结
2014/12/10 职场文书
2015年妇联工作总结范文
2015/04/22 职场文书
煤矿施工安全协议书
2016/03/22 职场文书
Vue全家桶入门基础教程
2021/05/14 Vue.js
Mysql中where与on的区别及何时使用详析
2021/08/04 MySQL
简单聊聊TypeScript只读修饰符
2022/04/06 Javascript