使用Ruby TCPSocket我可以这样做:
@socket = TCPSocket.new "174.129.224.73", 80
对应于test echo websocket ws://echo.websocket.org
但是如果我需要基于
建立与套接字的连接怎么办?domain:10440/api/websockets
如何使用TCPSocket执行此操作?
答案 0 :(得分:1)
为Steffen Ullrich的答案提供更多背景信息:
这不能以你想象(或要求)完成的方式完成。
您要询问的网址部分(/the/path
) - 称为URI,“ U nique R 资源我 dentifier“ - 特定于HTTP,不适用于所有TCP / IP连接。
根据HTTP协议(使用任何HTTP方法,如HEAD,GET,POST等),通常在建立TCP连接后请求URI。
Websocket协议使用名为“UPGRADE”的HTTP方法,要求服务器从HTTP协议切换到Websocket协议。
在此UPGRADE请求期间,使用它的URI请求所请求的资源。在ws://echo.websocket.org
,资源位于根目录 - /
,但它可以位于任意位置并识别不同的网址,例如使用/echo
表示echo,/chat
表示不同的网页-app application。
您可以自己看到以下行未连接到websocket echo服务器: @socket = TCPSocket.new“174.129.224.73”,80
@socket
现已连接到HTTP服务器,尚未建立websocket连接。
看看你得到了什么回应:
require 'socket'
@socket = TCPSocket.new "174.129.224.73", 80
@socket << "GET / HTTP/1.0\r\n\r\n"
@socket.read 1024
@socket.close
如您所见,您会收到HTTP响应。
# @socket.read(1024) # => should return "HTTP/1.1 404 Not Found\r\nContent-Type: text/html\r\nContent-Length: 61\r\n\r\n<html><head></head><body><h1>404 Not Found</h1></body></html>"