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服务器(3):代码模块化
Dec 18 NodeJs
nodejs调用cmd命令实现复制目录
May 04 NodeJs
你一定会收藏的Nodejs代码片段
Feb 04 NodeJs
基于NodeJS+MongoDB+AngularJS+Bootstrap开发书店案例分析
Jan 12 NodeJs
用nodejs搭建websocket服务器
Jan 23 NodeJs
NodeJS仿WebApi路由示例
Feb 28 NodeJs
详谈Angular路由与Nodejs路由的区别
Mar 05 NodeJs
详解HTTPS 的原理和 NodeJS 的实现
Jul 04 NodeJs
nodejs 图解express+supervisor+ejs的用法(推荐)
Sep 08 NodeJs
Nodejs 和 Electron ubuntu下快速安装过程
May 04 NodeJs
nodejs实现套接字服务功能详解
Jun 21 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代码
2012/09/14 PHP
php 使用redis锁限制并发访问类示例
2016/11/02 PHP
laravel5.0在linux下解决.htaccess无效和去除index.php的问题
2019/10/16 PHP
IE下JS读取xml文件示例代码
2013/08/05 Javascript
浅谈js中变量初始化
2015/02/03 Javascript
jquery中ready()函数执行的时机和window的load事件比较
2015/06/22 Javascript
jquery 重写 ajax提交并判断权限后 使用load方法报错解决方法
2016/01/19 Javascript
jQuery 插件封装的方法
2016/11/16 Javascript
原生js实现鼠标跟随效果
2017/02/28 Javascript
javascript实现日期三级联动下拉框选择菜单
2020/12/03 Javascript
详解vue-router 2.0 常用基础知识点之导航钩子
2017/05/10 Javascript
JS简单实现数组去重的方法分析
2017/10/14 Javascript
windows下更新npm和node的方法
2017/11/30 Javascript
解决iview多表头动态更改列元素发生的错误的方法
2018/11/02 Javascript
Windows下支持自动更新的Electron应用脚手架的方法
2018/12/24 Javascript
15分钟学会vue项目改造成SSR(小白教程)
2019/12/17 Javascript
javascript实现页面的实时时钟显示示例
2020/08/06 Javascript
如何手写简易的 Vue Router
2020/10/10 Javascript
[02:26]2018DOTA2亚洲邀请赛赛前采访-Newbee篇
2018/04/03 DOTA
详解Python 装饰器执行顺序迷思
2018/08/08 Python
python 可视化库PyG2Plot的使用
2021/01/21 Python
Keras保存模型并载入模型继续训练的实现
2021/02/20 Python
高级运动鞋:GREATS
2019/07/19 全球购物
美国厨房和园艺工具网上商店:Nestneed
2019/08/24 全球购物
英国拖鞋购买网站:Bedroom Athletics
2020/02/28 全球购物
计算机网络专业推荐信
2013/11/24 职场文书
学习雷锋寄语大全
2014/04/11 职场文书
《灰椋鸟》教学反思
2014/04/27 职场文书
环保建议书100字
2014/05/14 职场文书
学校党的群众路线教育实践活动整改措施
2014/10/25 职场文书
承诺保证书格式
2015/02/28 职场文书
介绍信范文大全
2015/05/07 职场文书
小学六年级班主任工作经验交流材料
2015/11/02 职场文书
校运会班级霸气口号
2015/12/24 职场文书
《狼王梦》读后感:可怜天下父母心
2019/11/01 职场文书
利用python做数据拟合详情
2021/11/17 Python