socket.io websocket
不能不知道的事:
在Http协议中,客户端向服务器端发送请求,服务器端收到请求再进行回应,整个过程中,服务器端是被动方,客户端是主动方;
websoket是H5的一种基于TCP的新通信协议,它与Http协议的不同之处就是Websocket能实现服务器端主动推送消息到客户端,服务器端与客户端都能发起通信,实现浏览器与服务器之间的双向通信;
socket.io是一个完全由js实现,基于nodejs、支持websocket的协议用于实时通讯、跨平台的开源框架,它包括客户端的js和服务器端的nodejs。
可以这样理解:socket.io封装了websocket以及其他的一些协议,实现了websocket的服务器端代码,同时具有很强的兼容性,兼容各种浏览器以及移动设备。有了它,便可以更快捷的实现服务器端与客户端之间的实时通讯。
这样的话:
实现一个简单的多人聊天室功能。谢谢大神的分享:https://www.cnblogs.com/Wayou/p/hichat_built_with_nodejs_socket.html


代码已上传至git:请戳这里
应该再说说这些:
1.socket.io官网:https://socket.io/
2.(1)socket.emit:客户端与服务器端之间发送消息是用emit;
例如客户端向服务端发送登录请求
//发起一个login事件并将输入的昵称发送到服务器
socket.emit('login',nickName) //login是自定义的事件,后面是带的参数
(2)socket.on:服务器端要接收客户端发送的login事件,就得对该事件进行监听
//用户登录事件
socket.on('login', function(nickname) {
if(users.indexOf(nickname)>-1){
socket.emit('nickExisted');
}else{
socket.userIndex = users.length;
socket.nickname = nickname;
users.push(nickname);
socket.emit('loginSuccess');
//向所有连接到服务器的客户端发送给当前登录用户的昵称
io.sockets.emit('system',nickname,users.length, 'login');
}
})
同理,服务器端也可以向客户端发送事件,只要客户端也对该事件进行监听就行.
(3)io.sockets.emit:服务器端向连接的所有客户端发送消息得用io.sockets.emit;
(4)socket.broadcast.emit:给除了自己以外的客户端广播消息.
3.socket.io是一个基于 WebSocket 的 C-S 实时通信库,它可以实现浏览器和服务器之间的实时、双向和基于事件的通信;
4.Socket.io不是websocket的实现,虽然它的确使用了websocket来传输的,但是它为每个包新增一些元数据:包类型、命名空间以及ack id,
其主要特点:
可靠性
支持自动连接
断开检测
支持二进制
支持混合
支持房间(聊天室功能)
5.使用场景:①比如说:给在线用户实时推送一些消息;②某个用户购买了什么,实时推送给其他用户;
值得收藏的:
1.英文文档:https://socket.io/
对于初学者,官方文档无疑是最快的入门方法,但是纯英文语言,是有些小困难,幸好国内还有比较适合入门级别的中文解释:
2.中文文档:https://www.w3cschool.cn/socket/
socket.io websocket的更多相关文章
- Hosting socket.io WebSocket apps in IIS using iisnode
In this post I explain how to configure a socket.io node.js application to use of WebSockets when ho ...
- 9、socket.io,websocket 前后端实时通信,(聊天室的实现)
websocket 一种通信协议 ajax/jsonp 单工通信 websocket 全双工通信 性能高 速度快 2种方式: 1.前端的websocket 2.后端的 socket.io 一.后端so ...
- 使用Node.js+Socket.IO搭建WebSocket实时应用
Web领域的实时推送技术,也被称作Realtime技术.这种技术要达到的目的是让用户不需要刷新浏览器就可以获得实时更新.它有着广泛的应用场景,比如在线聊天室.在线客服系统.评论系统.WebIM等. W ...
- websocket与socket.io
什么是Websocket? Websocket是一个独立于http的实时通信协议,最初是在HTML5中被引用进来的,在HTML5规范中作为浏览器与服务器的核心通信技术被嵌入到浏览器中.WebSocke ...
- (转)使用Node.js+Socket.IO搭建WebSocket实时应用
Web领域的实时推送技术,也被称作Realtime技术.这种技术要达到的目的是让用户不需要刷新浏览器就可以获得实时更新.它有着广泛的应用场景,比如在线聊天室.在线客服系统.评论系统.WebIM等. W ...
- Socket.IO – 基于 WebSocket 构建跨浏览器的实时应用
Socket.IO 是一个功能非常强大的框架,能够帮助你构建基于 WebSocket 的跨浏览器的实时应用.支持主流浏览器,多种平台,多种传输模式,还可以集合 Exppress 框架构建各种功能复杂 ...
- AndroidAsync :异步Socket,http(client+server),websocket和socket.io的Android类库
AndroidAsync是一个用于Android应用的异步Socket,http(client+server),websocket和socket.io的类库.基于NIO,没有线程.它使用java.ni ...
- 使用Node.js+Socket.IO搭建WebSocket实时应用【转载】
原文:http://www.jianshu.com/p/d9b1273a93fd Web领域的实时推送技术,也被称作Realtime技术.这种技术要达到的目的是让用户不需要刷新浏览器就可以获得实时更新 ...
- nodejs之socket.io模块——实现了websocket协议
Nodejs实现websocket的4种方式:socket.io.WebSocket-Node.faye-websocket-node.node-websocket-server,主要使用的是sock ...
随机推荐
- 使用VMware将Linux装在物理硬盘上,开机即可进入Linux (转)
目录(?)[-] 本文目的 具体操作 1 软件准备 2 安装 21 对硬盘操作 22 创建虚拟机并安装 23 使用Grub引导Linux 1. 本文目的 适合于没有光驱的计算机来安装Linux,还有 ...
- 摄像头驱动OV7725学习笔记连载(一):OV7725 电器特性和时序图
OV(豪威科技)已经被中国财团收购.这个昔日的大佬,最终走下神坛. 关于OVsensor的资料包括,OV7725的简介(OmniVsion_OV7725),OV7725的数据手册(OV7725_Dat ...
- 关于Unity中的旋涡特效的制作(捕鱼达人3技术)(专题八)
Mesh--材质--Shader 1: Mesh 是网格,包括顶点,法线,纹理坐标,切线,三角形.在每一个3D模型节点里面,有一个Mesh Filter组件来提取模型里面的网格数据;2: Shader ...
- qualcomm lk gpio
关于高通平台lk中控制gpio的记录 http://blog.csdn.net/loongembedded/article/details/72834761 http://blog.csdn.net/ ...
- Java如何获得运行线程的优先级?
在Java编程中,如何获得运行线程的优先级? 以下示例使用setPriority()方法打印正在运行的线程的优先级. package com.yiibai; public class GettingT ...
- Git -- 工作区 和 暂存区
Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念. 先来看名词解释. 工作区(Working Directory) 就是你在电脑里能看到的目录,比如我的learngit文件夹就是一个工 ...
- thinkphp中的AJAX返回ajaxReturn()
系统支持任何的AJAX类库,Action类提供了ajaxReturn方法用于AJAX调用后返回数据给客户端.并且支持JSON.XML和EVAL三种方式给客户端接受数据,通过配置DEFAULT_AJAX ...
- u3d udp服务器
using UnityEngine; using System.Collections; using System.Net; using System.Net.Sockets; using Syste ...
- shiro+redis多次调用doReadSession方法的解决方案
Web 项目使用shiro,针对这个问题可以重写DefaultWebSessionManager,将缓存数据存放到request中,这样可以保证每次请求(可能会多次调用doReadSession方法) ...
- 【NLP】Stanford
http://web.stanford.edu/class/cs224n/syllabus.html https://www.youtube.com/watch?v=OQQ-W_63UgQ&l ...