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的前后端分离的思考与实践(一)全栈式开发
Sep 26 NodeJs
轻松创建nodejs服务器(1):一个简单nodejs服务器例子
Dec 18 NodeJs
NodeJS学习笔记之MongoDB模块
Jan 13 NodeJs
基于nodejs+express(4.x+)实现文件上传功能
Nov 23 NodeJs
NodeJS实现阿里大鱼短信通知发送
Jan 17 NodeJs
Jquery通过ajax请求NodeJS返回json数据实例
Nov 08 NodeJs
详解nodejs 文本操作模块-fs模块(四)
Dec 22 NodeJs
nodejs 搭建简易服务器的图文教程(推荐)
Jul 18 NodeJs
nodejs调取微信收货地址的方法
Dec 20 NodeJs
nodejs实现的简单web服务器功能示例
Mar 15 NodeJs
nodejs express配置自签名https服务器的方法
May 22 NodeJs
nodejs中实现修改用户路由功能
May 24 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实现将视频转成MP4并获取视频预览图的方法
2015/03/12 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
2018/01/16 PHP
PHP实现基于状态的责任链审批模式详解
2019/05/31 PHP
滚动经典最新话题[prototype框架]下编写
2006/10/03 Javascript
jQuery LigerUI 使用教程表格篇(1)
2012/01/18 Javascript
Js实现双击鼠标自动滚动屏幕的示例代码
2013/12/14 Javascript
js replace替换所有匹配的字符串
2014/02/13 Javascript
jQuery学习笔记之jQuery.fn.init()的参数分析
2014/06/09 Javascript
初始Nodejs
2014/11/08 NodeJs
Node.js和MongoDB实现简单日志分析系统
2015/04/25 Javascript
JS常用字符串方法(推荐)
2021/01/15 Javascript
js实时获取窗口大小变化的实例代码
2016/11/18 Javascript
详解Vue中过度动画效果应用
2017/05/25 Javascript
JavaScript中递归实现的方法及其区别
2017/09/12 Javascript
vue select组件的使用与禁用实现代码
2018/04/10 Javascript
JS跨域请求的问题解析
2018/12/03 Javascript
js JSON.stringify()基础详解
2019/06/19 Javascript
在Vuex中Mutations修改状态操作
2020/07/24 Javascript
[02:59]DOTA2完美大师赛主赛事第三日精彩集锦
2017/11/25 DOTA
Python中最常用的操作列表的几种方法归纳
2015/04/24 Python
Python读取视频的两种方法(imageio和cv2)
2018/04/15 Python
Selenium 模拟浏览器动态加载页面的实现方法
2018/05/16 Python
对python3中pathlib库的Path类的使用详解
2018/10/14 Python
Pandas中resample方法详解
2019/07/02 Python
python实现可下载音乐的音乐播放器
2020/02/25 Python
Sublime Text3最新激活注册码分享适用2020最新版 亲测可用
2020/11/12 Python
python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解
2021/01/26 Python
CSS3之2D与3D变换的实现方法
2019/01/28 HTML / CSS
美国最大的购物网站:Amazon.com(亚马逊美国)
2020/05/23 全球购物
波兰家居饰品和厨房配件网上商店:Maleomi
2020/12/15 全球购物
Chupi官网:在爱尔兰手工制作的订婚、结婚戒指和精美珠宝
2020/09/28 全球购物
文明风采获奖感言
2014/02/18 职场文书
四风问题查摆剖析材料
2014/10/11 职场文书
幼儿园开学报名通知
2015/07/16 职场文书
中国古代史学名著《战国策》概述
2019/08/09 职场文书
nginx反向代理配置去除前缀案例教程
2021/07/26 Servers