Nodejs+Socket.io实现通讯实例代码


Posted in NodeJs onFebruary 13, 2017

目录结构

D:.
 │ package.json
 │ server.js
 │
 └─public
 index.html
 socket.io.js

需要的条件

  • socket.io.js 供前端界面初始化io
  • socket.io 供NodeJs端提供socket方法

socket.io.js存在于socket.io-client

socket.io存在于socket.io

演示的功能

  • 客户端发送消息给服务端
  • 后端触发事件告知客户端
  • 客户端离开触发服务端事件

服务端

server.js

var express = require('express'); 
var app = express();

var server = require('http').createServer(app);
var io = require('socket.io')(server);

app.use('/', express.static(__dirname + '/public')); 

server.listen(80);

//socket部分
io.on('connection', function(socket) {
  //接收并处理客户端的hi事件
  socket.on('hi', function(data) {
    console.log(data);

    //触发客户端事件c_hi
    socket.emit('c_hi','hello too!')
  })

  //断开事件
  socket.on('disconnect', function(data) {
    console.log('断开',data)
    socket.emit('c_leave','离开');
    //socket.broadcast用于向整个网络广播(除自己之外)
    //socket.broadcast.emit('c_leave','某某人离开了')
  })

});
  • connection用来处理socket链接事件
  • disconnect处理连接断开事件
  • 后端接受前端事件通过socket.on(EventName,function(date){})
  • 后端触发前端事件通过socket.emit(EventName,msg)

这个后端演示了,前端发送消息给后端,触发hi事件,hi事件通过回调在触发客户端定义的c_hi事件告知前端。

客户端

index.html

<!DOCTYPE html>
<html>

<head>
  <title>socket</title>
</head>

<body>


<button id="sendBtn">发送消息</button>

<button id="leaveBtn">离开</button>

</body>
<script type="text/javascript" src="./socket.io.js"></script>
<script type="text/javascript">
  var socket=io.connect('localhost:80'),//与服务器进行连接
    send=document.getElementById('sendBtn'),
    leave=document.getElementById('leaveBtn');

  send.onclick=function(){
    socket.emit('hi', 'hello!');
  }

  leave.onclick=function(){
    window.location.href="about:blank" rel="external nofollow" ;
    window.close()
    socket.emit('leave', 'leave');
  }

  //接收来自服务端的信息事件c_hi
  socket.on('c_hi',function(msg){
    alert(msg)
  })

  // socket.on('c_leave',function(msg){
  //   alert(msg)
  // })

</script>

</html>

Nodejs+Socket.io实现通讯实例代码

  • 发送消息按钮用来给服务端发送信息,触发服务端定义的hi事件。
  • 离开页面按钮用来离开页面,也就是socket会自动断开。触发服务端定义的disconnect。

源码下载:Socket_3water.rar

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

NodeJs 相关文章推荐
用nodejs写的一个简单项目打包工具
May 11 NodeJs
Nodejs使用mysql模块之获得更新和删除影响的行数的方法
Mar 18 NodeJs
抛弃Nginx使用nodejs做反向代理服务器
Jul 17 NodeJs
nodejs开发环境配置与使用
Nov 17 NodeJs
轻松创建nodejs服务器(7):阻塞操作的实现
Dec 18 NodeJs
实例分析nodejs模块xml2js解析xml过程中遇到的坑
Mar 18 NodeJs
nodejs个人博客开发第三步 载入页面
Apr 12 NodeJs
nodejs入门教程二:创建一个简单应用示例
Apr 24 NodeJs
Nodejs中使用captchapng模块生成图片验证码
May 18 NodeJs
nodejs项目windows下开机自启动的方法
Nov 22 NodeJs
NodeJS 实现多语言的示例代码
Sep 11 NodeJs
nodejs 递归拷贝、读取目录下所有文件和目录
Jul 18 NodeJs
Nodejs高扩展性的模板引擎 functmpl简介
Feb 13 #NodeJs
Nodejs 发送Post请求功能(发短信验证码例子)
Feb 09 #NodeJs
Nodejs实现短信验证码功能
Feb 09 #NodeJs
Express与NodeJs创建服务器的两种方法
Feb 06 #NodeJs
使用nodejs下载风景壁纸
Feb 05 #NodeJs
nodeJs链接Mysql做增删改查的简单操作
Feb 04 #NodeJs
nodejs基础应用
Feb 03 #NodeJs
You might like
php session应用实例 登录验证
2009/03/16 PHP
php单例模式示例分享
2015/02/12 PHP
Yii2针对游客、用户防范规则和限制的解决方法分析
2016/10/08 PHP
PHP实现数组的笛卡尔积运算示例
2017/12/15 PHP
js下获取div中的数据的原理分析
2010/04/07 Javascript
JavaScript的单例模式 (singleton in Javascript)
2010/06/11 Javascript
js中for in的用法示例解析
2013/12/25 Javascript
JavaScript中的null和undefined区别介绍
2015/01/01 Javascript
JavaScript获取网页中第一个链接ID的方法
2015/04/03 Javascript
JavaScript 限制文本框不可输入英文单双引号的方法
2016/12/20 Javascript
jquery easyui dataGrid动态改变排序字段名的方法
2017/03/02 Javascript
ZeroClipboard.js使用一个flash复制多个文本框
2017/06/19 Javascript
js实现图片旋转 js滚动鼠标中间对图片放大缩小
2017/07/05 Javascript
React Native之prop-types进行属性确认详解
2017/12/19 Javascript
boostrap模态框二次弹出清空原有内容的方法
2018/08/10 Javascript
小程序实现列表点赞功能
2018/11/02 Javascript
Chrome插件开发系列一:弹窗终结者开发实战
2020/10/02 Javascript
[00:56]PWL开团时刻DAY8——追追追追追!
2020/11/09 DOTA
Python标准异常和异常处理详解
2015/02/02 Python
利用一个简单的例子窥探CPython内核的运行机制
2015/03/30 Python
python比较2个xml内容的方法
2015/05/11 Python
Perl中著名的Schwartzian转换问题解决实现
2015/06/02 Python
特征脸(Eigenface)理论基础之PCA主成分分析法
2018/03/13 Python
Python数据可视化教程之Matplotlib实现各种图表实例
2019/01/13 Python
关于Python中的向量相加和numpy中的向量相加效率对比
2019/08/26 Python
windows中安装Python3.8.0的实现方法
2019/11/19 Python
pyspark 随机森林的实现
2020/04/24 Python
使用python实现CGI环境搭建过程解析
2020/04/28 Python
Python 如何对文件目录操作
2020/07/10 Python
详解如何使用Pytest进行自动化测试
2021/01/14 Python
京东国际站:JOYBUY
2017/11/23 全球购物
三分钟演讲稿事例
2014/03/03 职场文书
党干部专题民主生活会对照检查材料思想汇报
2014/10/06 职场文书
新闻报道稿范文
2015/07/23 职场文书
安全伴我行主题班会
2015/08/13 职场文书
解决pytorch 损失函数中输入输出不匹配的问题
2021/06/05 Python