簡體   English   中英

Ruby:使用Ruby TCPSocket在特定URI路徑上建立客戶端連接

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM