นี่คือคำสั่ง websockify ที่สามารถเรียกใช้ในผู้ให้บริการโฮสต์ฟรีของ OnWorks โดยใช้หนึ่งในเวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS
โครงการ:
ชื่อ
websockify - WebSockets ไปยัง TCP socket bridge
เรื่องย่อ
websockify [ตัวเลือก] [source_addr:]source_port target_addr:target_port
websockify [ตัวเลือก] [source_addr:]source_port -- WRAP_COMMAND_LINE
OPTIONS
-h, --help แสดงข้อความช่วยเหลือนี้และออก
-v, --verbose verbose ข้อความและต่อเฟรมทราฟฟิก
--record=FILE บันทึกเซสชันไปที่ FILE [session_number]
-D, --daemon กลายเป็น daemon (กระบวนการเบื้องหลัง)
--run-once จัดการการเชื่อมต่อ WebSocket เดียวและออก
--timeout=TIMEOUT หลังจาก TIMEOUT วินาทีออกเมื่อไม่ได้เชื่อมต่อ
--cert=ไฟล์ใบรับรอง CERT SSL
--key=KEY ไฟล์คีย์ SSL (หากแยกจากใบรับรอง)
--ssl-only ไม่อนุญาตการเชื่อมต่อที่ไม่เข้ารหัส
--web=DIR เรียกใช้เว็บเซิร์ฟเวอร์บนพอร์ตเดียวกัน ให้บริการไฟล์จาก DIR
--wrap-mode=MODE ดำเนินการเมื่อโปรแกรมที่ปิดอยู่ออกหรือ
daemonizes: exit (ค่าเริ่มต้น), ละเว้น, respawn
DESCRIPTION
ในระดับพื้นฐานที่สุด websockify เพียงแค่แปลทราฟฟิก WebSockets เป็น TCP . ปกติ
การจราจรซ็อกเก็ต Websockify ยอมรับการจับมือ WebSockets แยกวิเคราะห์แล้วเริ่ม
ส่งต่อการรับส่งข้อมูลระหว่างลูกค้าและเป้าหมายในทั้งสองทิศทาง
websockify เดิมชื่อ wsproxy และเป็นส่วนหนึ่งของโครงการ noVNC
หมายเหตุ
WebSockets ไบนารี ข้อมูล
Websockify รองรับโปรโตคอล WebSockets ทุกรุ่น (Hixie และ HyBI) ยิ่งแก่
โปรโตคอลเวอร์ชัน Hixie รองรับเฉพาะเพย์โหลดข้อความ UTF-8 เพื่อการขนส่ง
ข้อมูลไบนารีบน UTF-8 ต้องใช้การเข้ารหัสเพื่อห่อหุ้มข้อมูลภายใน UTF-8
Websockify ใช้ base64 เพื่อเข้ารหัสการรับส่งข้อมูลทั้งหมดไปและกลับจากไคลเอนต์ ไม่ส่งผลกระทบ
ข้อมูลระหว่าง websockify และเซิร์ฟเวอร์
เข้ารหัส WebSocket การเชื่อมต่อ (wss://)
ในการเข้ารหัสการรับส่งข้อมูลโดยใช้รูปแบบ URI 'wss://' ของ WebSocket คุณต้องสร้าง
ใบรับรองสำหรับ websockify เพื่อโหลด โดยค่าเริ่มต้น websockify จะโหลดชื่อไฟล์ใบรับรอง
self.pem แต่ตัวเลือก --cert=CERT สามารถแทนที่ชื่อไฟล์ได้ คุณสามารถสร้างความ
ใบรับรองที่ลงนามโดยใช้ openssl เมื่อถูกถามถึงชื่อสามัญ ให้ใช้ชื่อโฮสต์ของ
เซิร์ฟเวอร์ที่พร็อกซีจะทำงาน:
openssl req - ใหม่ -x509 - วัน 365 - โหนด - ออก self.pem -keyout self.pem
เว็บถุงเท้า จาวาสคริปต์ ห้องสมุด
websock.js (ดู https://github.com/kanaka/websockify) ไลบรารีไลบรารี Javascript
จัดเตรียมวัตถุ Websock ที่คล้ายกับวัตถุ WebSocket มาตรฐาน แต่ Websock
เปิดใช้งานการสื่อสารกับซ็อกเก็ต TCP ดิบ (เช่น สตรีมไบนารี) ผ่าน websockify นี้
ทำได้โดยการเข้ารหัส base64 สตรีมข้อมูลระหว่าง Websock และ websockify
Websock มีบัฟเฟอร์คิวรับในตัว เหตุการณ์ข้อความไม่มีจริง
data แต่เป็นเพียงการแจ้งเตือนว่ามีข้อมูลใหม่ วิธี rQ* หลายวิธี
มีให้อ่านข้อมูลไบนารีจากคิวรับ
Websock API ได้รับการบันทึกไว้ในหน้าวิกิของ websock.js API:
https://github.com/kanaka/websockify/wiki/websock.js
ดูส่วน "ตัดโปรแกรม" ด้านล่างสำหรับตัวอย่างการใช้ Websock และ websockify เป็น a
เบราว์เซอร์ไคลเอ็นต์ telnet (wstelnet.html)
เพิ่มเติม เว็บ sockify คุณสมบัติ
สิ่งเหล่านี้ไม่จำเป็นสำหรับการทำงานพื้นฐาน
* Daemonizing: เมื่อระบุตัวเลือก -D แล้ว websockify จะทำงานในพื้นหลังเป็น
กระบวนการภูต
* SSL (wss:// WebSockets URI): สิ่งนี้ถูกตรวจพบโดยอัตโนมัติโดย websockify โดย
ดมกลิ่นไบต์แรกที่ส่งมาจากไคลเอนต์แล้วห่อซ็อกเก็ตถ้า
ข้อมูลเริ่มต้นด้วย '\x16' หรือ '\x80' (บ่งชี้ SSL)
* นโยบายความปลอดภัยแฟลช: websockify ตรวจพบคำขอนโยบายความปลอดภัยแฟลช (อีกครั้งโดย
ดมกลิ่นแพ็กเก็ตแรก) และตอบด้วยนโยบายความปลอดภัยแฟลชที่เหมาะสม
การตอบสนอง (แล้วปิดพอร์ต) ซึ่งหมายความว่าไม่มีนโยบายความปลอดภัยแฟลชแยกต่างหาก
จำเป็นต้องใช้เซิร์ฟเวอร์เพื่อรองรับ Flash WebSockets โปรแกรมจำลองทางเลือก
* การบันทึกเซสชัน: คุณลักษณะนี้ที่ช่วยให้สามารถบันทึกการรับส่งข้อมูลที่ส่งและ
ได้รับจากไคลเอนต์ไปยังไฟล์โดยใช้ตัวเลือก --record
* มินิเว็บเซิร์ฟเวอร์: websockify สามารถตรวจจับและตอบสนองต่อคำขอเว็บปกติบน
พอร์ตเดียวกับพร็อกซี WebSockets และนโยบายความปลอดภัย Flash ฟังก์ชันนี้คือ
เปิดใช้งานด้วยตัวเลือก --web DIR โดยที่ DIR เป็นรูทของไดเร็กทอรีเว็บto
ให้บริการ.
* ตัดโปรแกรม: ดูส่วน "ตัดโปรแกรม" ด้านล่าง
ห่อ a โครงการ
นอกเหนือจากการพร็อกซีจากที่อยู่ต้นทางไปยังที่อยู่เป้าหมาย (ซึ่งอาจอยู่ในa
ระบบที่แตกต่างกัน) websockify มีความสามารถในการเปิดโปรแกรมบนระบบท้องถิ่นและ
พร็อกซี WebSockets ทราฟฟิกไปยังพอร์ต TCP ปกติที่โปรแกรมเป็นเจ้าของ/ผูกมัด
สำเร็จด้วยไลบรารี LD_PRELOAD ขนาดเล็ก (rebind.so) ซึ่งสกัดกั้นการผูกมัด ()
ระบบเรียกโดยโปรแกรม พอร์ตที่ระบุถูกย้ายไปยัง localhost/loopback free ใหม่
พอร์ตสูง websockify จากนั้นพร็อกซีทราฟฟิก WebSockets ที่ส่งไปยังพอร์ตดั้งเดิมไปยัง
ใหม่ (ย้าย) พอร์ตของโปรแกรม
โหมดตัดโปรแกรมถูกเรียกใช้โดยแทนที่เป้าหมายด้วย -- ตามด้วยโปรแกรม
บรรทัดคำสั่งที่จะห่อ
`./websockify 2023 -- โปรแกรม ARGS`
ตัวเลือก --wrap-mode สามารถใช้เพื่อระบุว่าต้องดำเนินการใดเมื่อห่อเสร็จแล้ว
โปรแกรมออกหรือ daemonizes
นี่คือตัวอย่างการใช้ websockify เพื่อตัดคำสั่ง vncserver (ซึ่ง backgrounds
เอง) สำหรับใช้กับ noVNC:
`./websockify 5901 --wrap-mode=ignore -- vncserver -geometry 1024x768 :1`
นี่คือตัวอย่างการตัดคำ telnetd (จาก krb5-telnetd).telnetd ออกหลังจาก
การเชื่อมต่อปิดลง ดังนั้นโหมดการห่อถูกตั้งค่าให้สร้างคำสั่งใหม่อีกครั้ง:
`sudo ./websockify 2023 --wrap-mode=respawn -- telnetd -debug 2023`
หน้า wstelnet.html สาธิตไคลเอ็นต์ telnet ที่ใช้ WebSockets อย่างง่าย
ใช้ websockify ออนไลน์โดยใช้บริการ onworks.net