关键词:
1. Socket.IO原理
node.js提供了高效的服务端运行环境,但是由于浏览器端对HTML5的支持不一,为了兼容所有浏览器,提供卓越的实时的用户体验,并且为程序员提供客户端与服务端一致的编程体验,于是socket.io诞生。Socket.io将Websocket和轮询 (Polling)机制以及其它的实时通信方式封装成了通用的接口,并且在服务端实现了这些实时机制的相应代码。也就是说,Websocket仅仅是 Socket.io实现实时通信的一个子集。那么,Socket.io都实现了Polling中的那些通信机制呢?
WebSocket
Adobe® Flash® Socket
AJAX long polling
AJAX multipart streaming
Forever Iframe
JSONP Polling
Adobe® Flash® Socket 大部分PC浏览器都支持的socket模式,不过是通过第三方嵌入到浏览器,不在W3C规范内,所以可能将逐步被淘汰,况且,大部分的手机浏览器都不支持这种模式。
AJAX long polling 这个很好理解,所有浏览器都支持这种方式,就是定时的向服务器发送请求,缺点是会给服务器带来压力并且出现信息更新不及时的现象。
AJAX multipart streaming 这是在XMLHttpRequest对象上使用某些浏览器(比如说Firefox)支持的multi-part标志。Ajax请求被发送给服务器端并保 持打开状态(挂起状态),每次需要向客户端发送信息,就寻找一个挂起的的http请求响应给客户端,并且所有的响应都会通过统一连接来写入。
var xhr = $.ajaxSettings.xhr();
xhr.multipart =true;
xhr.open(‘GET‘, ‘ajax‘, true);
xhr.onreadystatechange = function()
if (xhr.readyState == 4)
processEvents($.parseJSON(xhr.responseText));
;
xhr.send(null);
Forever Iframe (永存的Iframe)技术涉及了一个置于页面中的隐藏Iframe标签,该标签的src属性指向返回服务器端事件的servlet路径。 每次在事件到达时,servlet写入并刷新一个新的script标签,该标签内部带有JavaScript代码,iframe的内容被附加上这一 script标签,标签中的内容就会得到执行。这种方式的缺点是接和数据都是由浏览器通过HTML标签来处理的,因此你没有办法知道连接何时在哪一端已被 断开了,并且Iframe标签在浏览器中将被逐步取消使用。
JSONP Polling JSONP轮询基本上与HTTP轮询一样,不同之处则是JSONP可以发出跨域请求,详细请搜索查询jsonp的内容。
2. Socket.IO环境搭建
本次给大家带来两种使用Socket.IO的方法。
两种方法都需要安装JDK,JDK版本要求1.7以上,JDK安装方法就不说了,网上有很多
使用Node.js运行Socket.IO
首先我们需要下载Node.js并安装。
enter image description here
这次我下载的是9.2.0 Current版本。
enter image description here
我安装的目录是----- E:Program Files odejs这个目录是用来配置环境变量的。安装完成之后我们可以得到如下图这些文件。
enter image description here
这样我们还需要去配置环境变量。新建一个NODEJS_HOME=E:Program Files odejs。
enter image description here
在Path最后追加%NODEJS_HOME%
enter image description here
配置完成后我们验证一下node.js是否可用。打开CMD,输入node -v:
enter image description here
目前我们只是完成了node.js的安装。并无法使用socket.io,因为socket.io只是node.js下的一个模块,需要我们手动安装。
如何安装呢?很简单。打开CMD直接输入npm install socket.io就可以自动的从网上把socketio下载下来了。
enter image description here
至此我们就将环境搭建完成了
socket.io入门篇
...il/591b114bb1d4fe074099d9c9.html前言本篇介绍使用node.js模块组件socket.io实现一个非常非常简易的聊天案例。本系列文章不对socket.io历史背景做过多阐述,只会通过一个个的案例带领大家进入socket.io的殿堂,增进小伙伴在socket.io实际开发... 查看详情
socket.io入门篇
前言上篇我们介绍了socket.io基本使用方法,本篇我们继续深入了解socket.io中room(房间)的概念和使用。对于room的概念,你只需理解3个地方就可以:1.在不加入或指定room的情况下,socket.io会默认分配一个defaultroom2.同一room下的sock... 查看详情
socket.io入门篇
...mitcode.com/detail/5926e3a056fba70278bf2044.html前言上篇我们介绍了socket.io中room的概念和使用,本篇我们继续深入了解socket.io中namespace(命名空间)的概念和使用。对于namespace的概念只需理解3个地方:1.在不声明新的命名空间情况下,系... 查看详情
socket.io入门
...建一个chat-example文件夹,并建立一个package.json文件{"name":"socket-chat-example","version":"0.0.1","description":"myfirstsocket.ioapp","dependencies":{}}2 查看详情
socket.io入门,简易聊天室(代码片段)
...。所以我们需要一个可以由服务端主动发出的协议,即WebSocket。WebSocket是HTML5新增的一种通信协议,其特点是服务端可以主动向客户端推送信息,客户端也可以主动向服务端发送信息,是真正的双向平等对话,属于服务器推送技... 查看详情
socket.io快入入门案例
socket.io基本介绍创建一个nodejs项目步骤1:创建项目目录步骤2:初始化nodejs项目目录结构命令:npminit-f结果如下:在nodejs项目安装socket.io模块命令:npminstallsokcet.iosocket.io网站:https://socket.io/socket.io快速入门案例客户端:index.html&l... 查看详情
socket.io延伸
项目正好用到了即时通讯功能,于是研究到了webSocket技术,后来发现了可以在web、[Android]、[iOS]上同时使用的解决方案,那就是SocketIO。其实现原理啥的不做介绍了,直接贴上IOS项目可能会用到的一些资源。首先是官网:http://sock... 查看详情
Socket.io 多连接
】Socket.io多连接【英文标题】:Socket.iomultipleconnections【发布时间】:2016-09-1517:26:42【问题描述】:我还没有真正找到有关文档的奇怪问题。我认为这可能最终会成为“您不了解产品的工作原理”的简单案例,我希望有人可以填... 查看详情
Socket IO 将 TCP 套接字消息输出到网页
】SocketIO将TCP套接字消息输出到网页【英文标题】:SocketIOtooutputaTCPsocketmessagetoawebpage【发布时间】:2018-05-1415:53:02【问题描述】:我正在试验NodeJS和SocketIO。我在这里查看了Socket.IO入门指南:https://socket.io/get-started/chat/。代码如... 查看详情
如何配置 socket.io 来监听客户端
】如何配置socket.io来监听客户端【英文标题】:Howtoconfiguresocket.iotolistentoclientside【发布时间】:2020-06-2510:51:00【问题描述】:我是使用套接字的新手,并不完全了解它们的工作原理。当我加载我的网站时,我收到此错误,我只... 查看详情
简单的游戏循环 Socket.io + Node.js + Express
】简单的游戏循环Socket.io+Node.js+Express【英文标题】:SimpleGameLoopSocket.io+Node.js+Express【发布时间】:2018-11-1805:08:55【问题描述】:我试图用简单的物理原理制作一个游戏,你可以在其中跳来跳去,看看其他玩家使用node.js、socket.io... 查看详情
/socket.io/socket.io.js 中不提供 Socket.io
】/socket.io/socket.io.js中不提供Socket.io【英文标题】:Socket.ioisnotservedin/socket.io/socket.io.js【发布时间】:2012-12-2420:46:28【问题描述】:我已在此处阅读有关我在node.js中的问题的答案,但我的问题仍然存在。在服务器中使用socket.io,... 查看详情
Express.js 'socket.io/socket.io.js 404'
】Express.js\\\'socket.io/socket.io.js404\\\'【英文标题】:Express.js\'socket.io/socket.io.js404\'Express.js\'socket.io/socket.io.js404\'【发布时间】:2017-02-0207:36:19【问题描述】:我正在尝试在使用ExpressJS的网站http://clickthebutton.herokuapp.com上合并实 查看详情
socket.io中文手册socket.io中文文档
socket.io中文手册,socket.io中文文档转载于:http://www.cnblogs.com/xiezhengcai/p/3956401.html服务端io.on(‘connection’,function(socket));//监听客户端连接,回调函数会传递本次连接的socketio.sockets.emit(‘String’,data);//给所有客户端广播消息io.socket 查看详情
socket.io中文手册socket.io中文文档
socket.io中文手册,socket.io中文文档转载于:http://www.cnblogs.com/xiezhengcai/p/3956401.html服务端io.on(‘connection’,function(socket));//监听客户端连接,回调函数会传递本次连接的socketio.sockets.emit(‘String’,data);//给所有客户端广播消息io.socket 查看详情
socket.io中文手册socket.io中文文档
socket.io中文手册,socket.io中文文档转载于:http://www.cnblogs.com/xiezhengcai/p/3956401.html服务端io.on(‘connection’,function(socket));//监听客户端连接,回调函数会传递本次连接的socketio.sockets.emit(‘String’,data);//给所有客户端广播消息io.socket 查看详情
未找到 Socket.io.js(node.js + express + socket.io)
】未找到Socket.io.js(node.js+express+socket.io)【英文标题】:Socket.io.jsnotfound(node.js+express+socket.io)【发布时间】:2014-10-2022:06:51【问题描述】:我一直在检查其他相关答案,例如:node.js/socket.io/socket.io.jsnotfoundSocket.ionotbeingservedbyNode.j... 查看详情
使用androidnodejs和socket.io创建一个实时聊天应用程序(代码片段)
介绍WebSockets是非常漂亮的工具,它允许我们在现代Web应用程序中建立实时通信。事实上,这个机制非常强大,它被用来构建不同类型的应用程序,如实时聊天或通知系统等。在本文中,我们将向您展示如何使... 查看详情