如何使用 socket.io 库区分客户端 TCP 套接字和客户端 websocket?

拉姆拉西·穆鲁格桑

如何处理来自具有相同端口的客户端 TCP 套接字和客户端 Websocket 的请求?

jfriend00

这需要一些创造性的工作,因为您必须等到第一个数据到达新连接的套接字时才能辨别它必须是什么类型的连接。两者都以传入的 TCP 连接开始。

然后,webSocket 连接在初始 TCP 连接之后发出 http 请求,请求将协议升级到 webSocket 协议。您可以检查到达新连接的 TCP 套接字的第一个数据,并检查套接字上的第一个数据是否确实是该形式的 http 请求。如果是,则它是传入的 webSocket 连接。

如果不是,那么它一定是您的常规 TCP 连接。在任何一种情况下,一旦您确定它必须是哪种类型的连接,您就会将初始数据传递给该类型连接的适当处理程序,以便它可以接管该套接字的处理。

一个有点相似的模型用于允许 http 服务器和 webSocket 服务器共享相同的端口。这对他们来说更容易一些,因为这两个协议都以 http 请求开始,但想法是相同的,当 webSocket 服务器共享一个 http 服务器时,它会检查传入的请求,看看它是否看起来像 webSocket 连接的开始(带有upgrade标头的 http 请求)。如果是,它将请求传递给 webSocket 处理代码。如果不是,它会将其视为正常传入的 http 请求并将其传递给 http 请求处理代码。

您可以在此处查看初始 webSocket 连接的外观:WebSockets 服务器架构如何工作?在这里:node js net sockets + websocket without socket.io两者都会向您展示启动所有 webSocket 连接的初始 http 请求的形式。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何为房间中的所有客户端更新套接字对象?(socket.io)

来自分类Dev

如何阻止客户端Socket.io循环套接字发射?

来自分类Dev

如何阻止客户端Socket.io循环套接字发射?

来自分类Dev

使用标准Web套接字客户端连接到Socket.io服务器

来自分类Dev

如何通过Web客户端访问TCP套接字

来自分类Dev

如何使用 socket.io 客户端发出数据?

来自分类Dev

Spring Integration和TCP服务器套接字-如何向客户端发送消息?

来自分类Dev

Linux:TCP 套接字侦听:如何检测无法关闭套接字的客户端?

来自分类Dev

Python tcp套接字客户端

来自分类Dev

Socket.io如何检查客户端的cookie数据?

来自分类Dev

Angular-socket-io:如何断开客户端

来自分类Dev

如何使socket.io客户端不重新连接?

来自分类Dev

socket.io 如何从客户端获取参数?

来自分类Dev

在Android上使用socket.io客户端库

来自分类Dev

断开node.js中以前的客户端socket.io套接字的连接

来自分类Dev

如何在没有套接字的Android中使用TCP客户端?

来自分类Dev

TCP / IP协议如何区分客户端?

来自分类Dev

Python客户端与socket.io v1.0建立连接并通过websocket触发事件

来自分类Dev

如何在C套接字(sys / socket.h)中获得客户端的地址和端口?

来自分类Dev

如何使用socket.io从客户端调用服务器端功能?

来自分类Dev

在node:socket.io或net模块中创建客户端-服务器TCP连接

来自分类Dev

如何从客户端断开和重新连接socket.io?

来自分类Dev

在不同子域上使用Socket.IO服务器和客户端

来自分类Dev

如何解决python中TCP套接字客户端部分的阻塞问题?

来自分类Dev

在C ++中使用TCP套接字进行远程客户端和服务器通信

来自分类Dev

TCP套接字服务器/客户端连接应使用哪个IP /端口?

来自分类Dev

套接字客户端如何setSoTimeout

来自分类Dev

如何使用socket.io等待客户端响应?

来自分类常见问题

如何使用socket.io向特定客户端发送消息

Related 相关文章

  1. 1

    如何为房间中的所有客户端更新套接字对象?(socket.io)

  2. 2

    如何阻止客户端Socket.io循环套接字发射?

  3. 3

    如何阻止客户端Socket.io循环套接字发射?

  4. 4

    使用标准Web套接字客户端连接到Socket.io服务器

  5. 5

    如何通过Web客户端访问TCP套接字

  6. 6

    如何使用 socket.io 客户端发出数据?

  7. 7

    Spring Integration和TCP服务器套接字-如何向客户端发送消息?

  8. 8

    Linux:TCP 套接字侦听:如何检测无法关闭套接字的客户端?

  9. 9

    Python tcp套接字客户端

  10. 10

    Socket.io如何检查客户端的cookie数据?

  11. 11

    Angular-socket-io:如何断开客户端

  12. 12

    如何使socket.io客户端不重新连接?

  13. 13

    socket.io 如何从客户端获取参数?

  14. 14

    在Android上使用socket.io客户端库

  15. 15

    断开node.js中以前的客户端socket.io套接字的连接

  16. 16

    如何在没有套接字的Android中使用TCP客户端?

  17. 17

    TCP / IP协议如何区分客户端?

  18. 18

    Python客户端与socket.io v1.0建立连接并通过websocket触发事件

  19. 19

    如何在C套接字(sys / socket.h)中获得客户端的地址和端口?

  20. 20

    如何使用socket.io从客户端调用服务器端功能?

  21. 21

    在node:socket.io或net模块中创建客户端-服务器TCP连接

  22. 22

    如何从客户端断开和重新连接socket.io?

  23. 23

    在不同子域上使用Socket.IO服务器和客户端

  24. 24

    如何解决python中TCP套接字客户端部分的阻塞问题?

  25. 25

    在C ++中使用TCP套接字进行远程客户端和服务器通信

  26. 26

    TCP套接字服务器/客户端连接应使用哪个IP /端口?

  27. 27

    套接字客户端如何setSoTimeout

  28. 28

    如何使用socket.io等待客户端响应?

  29. 29

    如何使用socket.io向特定客户端发送消息

热门标签

归档