基于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之可拖动的iframe效果代码
Aug 01 Javascript
JS判断当前日期是否大于某个日期的实现代码
Sep 02 Javascript
关于query Javascript CSS Selector engine
Apr 12 Javascript
Javascript对象属性方法汇总
Nov 21 Javascript
网站内容禁止复制和粘贴、另存为的js代码
Feb 26 Javascript
jQuery根据ID获取input、checkbox、radio、select的示例
Aug 11 Javascript
jQuery中offset()方法用法实例
Jan 16 Javascript
jQuery实现为LI列表前3行设置样式的方法【2种方法】
Sep 04 Javascript
实现隔行换色效果的两种方式【实用】
Nov 27 Javascript
在Vue项目中引入腾讯验证码服务的教程
Apr 03 Javascript
详解Vue webapp项目通过HBulider打包原生APP(vue+webpack+HBulider)
Feb 02 Javascript
JS浮点数运算结果不精确的Bug解决
Aug 01 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
如何使用Linux的Crontab定时执行PHP脚本的方法
2011/12/19 PHP
PHP Reflection API详解
2015/05/12 PHP
PHP获得数组交集与差集的方法
2015/06/10 PHP
php 利用socket发送HTTP请求(GET,POST)
2015/08/24 PHP
php判断str字符串是否是xml格式数据的方法示例
2017/07/26 PHP
收集的网上用的ajax之chat.js文件
2007/04/08 Javascript
jMessageBox 基于jQuery的窗口插件
2009/12/09 Javascript
JS定义回车事件(实现代码)
2013/07/08 Javascript
js与css实现弹出层覆盖整个页面的方法
2014/12/13 Javascript
JQuery基础语法小结
2015/02/27 Javascript
javascript中undefined与null的区别
2015/08/16 Javascript
JS中artdialog弹出框控件之提交表单思路详解
2016/04/18 Javascript
基于jQuery实现多标签页切换的效果(web前端开发)
2016/07/24 Javascript
jQuery实现的省市县三级联动菜单效果完整实例
2016/08/01 Javascript
JS数组去掉重复数据只保留一条的实现代码
2016/08/11 Javascript
详解nodejs操作mongodb数据库封装DB类
2017/04/10 NodeJs
详解JS中的attribute属性
2017/04/25 Javascript
JS实现的四级密码强度检测功能示例
2017/05/11 Javascript
vue中如何实现变量和字符串拼接
2017/06/19 Javascript
解决JS外部文件中文注释出现乱码问题
2017/07/09 Javascript
js最简单的双向绑定实例讲解
2018/01/02 Javascript
Python性能提升之延迟初始化
2016/12/04 Python
深入理解python中的select模块
2017/04/23 Python
python判断文件夹内是否存在指定后缀文件的实例
2019/06/10 Python
django框架实现一次性上传多个文件功能示例【批量上传】
2019/06/19 Python
python中对_init_的理解及实例解析
2019/10/11 Python
基于Python+Appium实现京东双十一自动领金币功能
2019/10/31 Python
Python selenium如何打包静态网页并下载
2020/08/12 Python
美国一站式电动和手动工具商店:International Tool
2020/11/26 全球购物
网络维护管理员的自我评价分享
2013/11/11 职场文书
酒店保洁主管岗位职责
2013/11/28 职场文书
领导干部考察材料
2014/02/08 职场文书
大学学风建设方案
2014/05/04 职场文书
python中的None与NULL用法说明
2021/05/25 Python
python处理json数据文件
2022/04/11 Python
mysql全面解析json/数组
2022/07/07 MySQL