[英]Extract uri parameters from a HTTP connection on a Ruby TCPSocket
[英]Ruby: Establish client connection on particular URI path with ruby TCPSocket
使用Ruby TCPSocket,我可以執行以下操作:
@socket = TCPSocket.new "174.129.224.73", 80
對應於測試echo websocket ws://echo.websocket.org
但是,如果我需要基於以下內容與套接字建立連接該怎么辦?
domain:10440/api/websockets
我該如何使用TCPSocket?
為Steffen Ullrich的答案提供更多背景信息:
這無法以您想象(或要求)的方式完成。
您要詢問的URL部分( /the/path
),即URI,即“ U nique R esource I標識符”,它是HTTP特定的,不適用於所有TCP / IP連接。
通常根據HTTP協議(使用任何HTTP方法(例如HEAD,GET,POST等))在建立TCP連接之后請求URI。
Websocket協議使用一種稱為“ UPGRADE”的HTTP方法,該方法要求服務器從HTTP協議切換到Websocket協議。
在此升級請求期間,使用其URI請求所請求的資源。 在ws://echo.websocket.org
,資源位於根目錄- /
,但是它可以在任何地方並標識不同的websocket,例如,將/echo
用於回顯,將/chat
用於不同的Web應用程序。
您可以自己看到以下行未連接到websocket回顯服務器:@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>"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.