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框架Express的模板视图机制分析
Jul 19 NodeJs
你一定会收藏的Nodejs代码片段
Feb 04 NodeJs
nodejs简单实现操作arduino
Sep 25 NodeJs
NodeJS、NPM安装配置步骤(windows版本) 以及环境变量详解
May 13 NodeJs
基于nodejs+express4.X实现文件下载的实例代码
Jul 13 NodeJs
nodejs实现解析xml字符串为对象的方法示例
Mar 14 NodeJs
nodeJS服务器的创建和重新启动的实现方法
May 12 NodeJs
Nodejs使用Mongodb存储与提供后端CRD服务详解
Sep 04 NodeJs
nodejs 使用nodejs-websocket模块实现点对点实时通讯
Nov 28 NodeJs
详解NodeJS Https HSM双向认证实现
Mar 12 NodeJs
nodejs实现日志读取、日志查找及日志刷新的方法分析
May 20 NodeJs
nodejs实现用户登录路由功能
May 22 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 伪造本地文件包含漏洞的代码
2011/11/03 PHP
PHP中如何定义和使用常量
2013/02/28 PHP
解析PHP中一些可能会被忽略的问题
2013/06/21 PHP
PHP实现图片不变型裁剪及图片按比例裁剪的方法
2016/01/14 PHP
关于Laravel Route重定向的一个注意点
2017/01/16 PHP
laravel 实现上传图片到本地和前台访问示例
2019/10/21 PHP
jquery 实现二级/三级/多级联动菜单的思路及代码
2013/04/08 Javascript
Extjs 4.x 得到form CheckBox 复选框的值
2014/05/04 Javascript
js调试工具console.log()方法查看js代码的执行情况
2014/08/08 Javascript
JS实现在网页中弹出一个输入框的方法
2015/03/03 Javascript
JS实现的N多简单无缝滚动代码(包含图文效果)
2015/11/06 Javascript
Bootstrap表单布局样式代码
2016/05/31 Javascript
浅谈JavaScript的内置对象和浏览器对象
2016/06/03 Javascript
完美解决jQuery符号$与其他javascript 库、框架冲突的问题
2016/08/09 Javascript
javascript中json对象json数组json字符串互转及取值方法
2017/04/19 Javascript
Vue的实例、生命周期与Vue脚手架(vue-cli)实例详解
2017/12/27 Javascript
微信小程序实现的贪吃蛇游戏【附源码下载】
2018/01/03 Javascript
Vue2.0生命周期的理解
2018/08/20 Javascript
angular6根据environments配置文件更改开发所需要的环境的方法
2019/03/06 Javascript
python在windows下实现备份程序实例
2014/07/04 Python
python使用win32com库播放mp3文件的方法
2015/05/30 Python
Python实现的直接插入排序算法示例
2018/04/29 Python
Python同步遍历多个列表的示例
2019/02/19 Python
python多进程(加入进程池)操作常见案例
2019/10/21 Python
记一次pyinstaller打包pygame项目为exe的过程(带图片)
2020/03/02 Python
python GUI库图形界面开发之PyQt5滚动条控件QScrollBar详细使用方法与实例
2020/03/06 Python
Pandas将列表(List)转换为数据框(Dataframe)
2020/04/24 Python
英国工艺品购物网站:Minerva Crafts
2018/01/29 全球购物
管理学专业个人求职信范文
2013/09/21 职场文书
学历公证委托书
2014/04/09 职场文书
2015年出纳年终工作总结
2015/05/14 职场文书
2015暑期社会实践通讯稿
2015/07/18 职场文书
心得体会该怎么写呢?
2019/06/27 职场文书
python控制台打印log输出重复的解决方法
2021/05/14 Python
Spring-cloud Config Server的3种配置方式
2021/09/25 Java/Android
vue中div禁止点击事件的实现
2022/04/02 Vue.js