美文网首页
0821_长连接(socket)实现即时通讯

0821_长连接(socket)实现即时通讯

作者: 天才在战斗 | 来源:发表于2016-08-21 22:39 被阅读562次

上节回顾

异步, 不是要请求服务器返回网页, 而是本地的网页打开, 就可以启动, 与后台交互.

这样本地与服务器, 存在一个跨域问题, ajax用一个叫jsonp的东西实现跨域

新内容(长连接-socket实时聊天技术)

网络模型

tcp/ip参考模型 osi参考模型(理想化)
应用层 应用层
表示层
会话层
传输层 传输层
网络层 网络层
网络接口层 数据链路层
物理层

即时通讯的实现(轮询->websocket [h5出现后带来的新技术])

  • 轮询:

过去很多网站为了实现即时通讯,所用的技术都是轮询(polling)。
轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP request,然后由服务器返回最新的数据给客户端的浏览器。
这种传统的HTTP request 的模式带来很明显的缺点 –
浏览器需要不断的向服务器发出请求,然而HTTP request 的header是非常长的,里面包含的有用数据可能只是一个很小的值,这样会占用很多的带宽。

传统的http轮询
  • WebSocket

使用 WebSocket,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。
在此WebSocket 协议中,为我们实现即时服务带来了两大好处:

  1. Header --
    互相沟通的Header是很小的-大概只有 2 Bytes
  2. Server Push --
    服务器的推送,服务器不再被动的接收到浏览器的request之后才返回数据,而是在有新数据时就主动推送给浏览器。
web socket

终端&web页面聊天室

  • 终端交互聊天室(net & readline)

net 模块用来实现 socket 功能, readline 用来读取 client 的输入

server 端先创建socket监听 ->
client 端没开启一个(当做一个用户)将其地址信息保存 ->
当某个 client 发送信息时, server 端接收信息, 并且对其进行处理 ->
最后通过 server 将其信息广播出去.

  • web页面交互(socket.io)

思路与终端聊天室相似, 只是使用模块区别

用户请求服务器, 开启聊天页面, 当然, 服务器需要验证用户身份 ->
用户通过登录审核后, 即完成了一次握手, 接下来便可进行即时通讯 ->
同样要求服务器端进行 socket 监听和信息广播.

作业

nodejs写基于终端和页面的聊天室

相关文章

  • 0821_长连接(socket)实现即时通讯

    上节回顾 异步, 不是要请求服务器返回网页, 而是本地的网页打开, 就可以启动, 与后台交互. 这样本地与服务器,...

  • 长连接和心跳

    长连接实现的几种方式 socket建立长连接并发送心跳

  • iOS使用socket实现聊天功能

    关于GCDAsyncSocket实现即时通讯功能客户端需要做的:1、连接服务器,连接socket,发送心跳2、编码...

  • (二)即时通讯系列之TCP Socket

    即时通讯系列之Socket简介 一、Socket连接 1.连接过程 建立Socket连接至少需要一对套接字,其中一...

  • http、socket、webservice、service、t

    http通过socket实现长连接和短连接,http短连接请求是发起请求获得返回数据后断开socket。socke...

  • 聊一聊Web端的即时通讯

    聊一聊Web端的即时通讯 Web端实现即时通讯的方法有哪些? 长连接 iframe流 前端实现步骤: Iframe...

  • CocoaAsyncSocket 学习 (一)

    socket 连接 即时通讯最大的特点就是实时性,基本感觉不到延时或是掉线,所以必须对socket的连接进行监视与...

  • Socket

    socket 连接 1.即时通讯最大的特点就是实时性,基本感觉不到延时或是掉线,所以必须对socket的连接进行监...

  • Okhttp 实现Android的websocket 长连接

    参考链接:Android通过Okhttp3实现socket长连接 demo——wsmanager OkHttp中的...

  • 2018-04-23

    LVS+Keepalived 实现socket连接,socket client无法连接lvs? VIP:10.5....

网友评论

      本文标题:0821_长连接(socket)实现即时通讯

      本文链接:https://www.haomeiwen.com/subject/cnewsttx.html