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 相关文章推荐
iPhone手机上搭建nodejs服务器步骤方法
Jul 06 NodeJs
浅谈Nodejs观察者模式
Oct 13 NodeJs
Nodejs中 npm常用命令详解
Jul 04 NodeJs
详谈Angular路由与Nodejs路由的区别
Mar 05 NodeJs
nodejs中模块定义实例详解
Mar 18 NodeJs
nodeJS实现路由功能实例代码
Jun 08 NodeJs
深入学习nodejs中的async模块的使用方法
Jul 12 NodeJs
Nodejs中使用phantom将html转为pdf或图片格式的方法
Sep 18 NodeJs
NodeJs实现定时任务的示例代码
Dec 05 NodeJs
NodeJs form-data格式传输文件的方法
Dec 13 NodeJs
nodejs实现连接mongodb数据库的方法示例
Mar 15 NodeJs
浅谈使用nodejs搭建web服务器的过程
Jul 20 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
全国FM电台频率大全 - 26 西藏自治区
2020/03/11 无线电
降低PHP Redis内存占用
2017/03/23 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
Smarty缓存机制实例详解【三种缓存方式】
2019/07/20 PHP
由浅到深了解JavaScript类
2006/09/08 Javascript
javascript 函数调用规则
2009/08/26 Javascript
使用javascript实现有效时间的控制,并显示将要过期的时间
2014/01/02 Javascript
javascript 表格内容排序 简单操作示例代码
2014/01/03 Javascript
字段太多jquey快速清空表单内容方法
2014/08/21 Javascript
JavaScript中number转换成string介绍
2014/12/31 Javascript
JavaScript 学习笔记之数据类型
2015/01/14 Javascript
JavaScript随机生成颜色的方法
2016/10/15 Javascript
jQuery事件详解
2017/02/23 Javascript
详解PHP后期静态绑定分析与应用
2018/03/21 Javascript
详解Angular-ui-BootStrap组件的解释以及使用
2018/07/13 Javascript
atom-design(Vue.js移动端组件库)手势组件使用教程
2019/05/16 Javascript
JS异步处理的进化史深入讲解
2019/08/25 Javascript
js实现飞机大战小游戏
2020/08/26 Javascript
python中利用xml.dom模块解析xml的方法教程
2017/05/24 Python
python抓取网站的图片并下载到本地的方法
2018/05/22 Python
Python基于生成器迭代实现的八皇后问题示例
2018/05/23 Python
在Pycharm中项目解释器与环境变量的设置方法
2018/10/29 Python
python多进程(加入进程池)操作常见案例
2019/10/21 Python
Python爬虫爬取电影票房数据及图表展示操作示例
2020/03/27 Python
python的reverse函数翻转结果为None的问题
2020/05/11 Python
Django REST 异常处理详解
2020/07/15 Python
使用CSS3来制作消息提醒框
2015/07/12 HTML / CSS
波兰汽车配件网上商店:iParts.pl
2020/09/08 全球购物
AJAX的全称是什么
2012/11/06 面试题
书法社团活动总结
2015/05/07 职场文书
北京爱情故事观后感
2015/06/12 职场文书
企业宣传稿范文
2015/07/23 职场文书
mysql的MVCC多版本并发控制的实现
2021/04/14 MySQL
python简单验证码识别的实现过程
2021/06/20 Python
CSS基础详解
2021/10/16 HTML / CSS
CSS中理解层叠性及权重如何分配
2022/12/24 HTML / CSS