คำถามติดแท็ก websocket

WebSocket เป็น API ที่สร้างขึ้นบนซ็อกเก็ต TCP และโปรโตคอลสำหรับการสื่อสารแบบสองทิศทางแบบฟูลดูเพล็กซ์ระหว่างไคลเอนต์และเซิร์ฟเวอร์โดยไม่มีค่าใช้จ่ายของ HTTP

4
อะไรคือความแตกต่างพื้นฐานระหว่าง WebSockets และ TCP บริสุทธิ์?
ฉันได้อ่านเกี่ยวกับWebSocketsและฉันสงสัยว่าทำไมเบราว์เซอร์ไม่สามารถเปิดการเชื่อมต่อ TCP เล็กน้อยและสื่อสารกับเซิร์ฟเวอร์เหมือนแอปพลิเคชันเดสก์ท็อปอื่น และทำไมการสื่อสารนี้เป็นไปได้ผ่าน websockets
167 tcp  websocket 

9
node.js, socket.io พร้อม SSL
ฉันกำลังพยายามให้ socket.io ทำงานด้วยใบรับรอง SSL ของฉัน แต่จะไม่เชื่อมต่อ ฉันใช้รหัสจากตัวอย่างแชท: var https = require('https'); var fs = require('fs'); /** * Bootstrap app. */ var sys = require('sys') require.paths.unshift(__dirname + '/../../lib/'); /** * Module dependencies. */ var express = require('express') , stylus = require('stylus') , nib = require('nib') , sio = require('socket.io'); /** * …

5
HTML WebSockets รักษาการเชื่อมต่อแบบเปิดสำหรับลูกค้าแต่ละรายหรือไม่ ขนาดนี้หรือไม่
ฉันอยากรู้ว่าใครมีข้อมูลเกี่ยวกับ scalability ของ HTML WebSockets สำหรับทุกสิ่งที่ฉันได้อ่านปรากฏว่าลูกค้าทุกคนจะยังคงเปิดบรรทัดการสื่อสารกับเซิร์ฟเวอร์ ฉันแค่สงสัยว่าขนาดนั้นและจำนวนการเชื่อมต่อ WebSocket แบบเปิดที่เซิร์ฟเวอร์สามารถจัดการได้อย่างไร บางทีการเปิดการเชื่อมต่อเหล่านั้นอาจไม่ใช่ปัญหาในความเป็นจริง แต่มันให้ความรู้สึกเหมือนเป็น
159 html  websocket 

3
ห้องสมุด WebSocket ใดที่จะใช้ในแอพ Android [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน2 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ฉันต้องการเพิ่มบริการลงในแอพ Android ของฉันซึ่งทำงานอยู่เบื้องหลังโดยถือการเชื่อมต่อWebSocket (อาจใช้เวลาหลายชั่วโมงหรือหลายวัน) และส่งข้อมูลบางอย่างไปยังเซิร์ฟเวอร์เป็นประจำ ตอนนี้ดูเหมือนจะมีห้องสมุด WebSocket จำนวนมากสำหรับ Java และฉันไม่แน่ใจว่าควรใช้อันไหน: TooTallNate / Java-WebSocket คำอธิบายจาก GitHub: การใช้งานไคลเอนต์และเซิร์ฟเวอร์ของ WebSocket แบร์โบนที่เขียนด้วย Java 100% http://java-websocket.org/ - หนึ่งนี้มีการเชื่อมโยงในผลครั้งแรกของฉัน googling "หุ่นยนต์ WebSocket" อย่างไรก็ตามมีปัญหาที่เปิดอยู่เล็กน้อยโดยเฉพาะอย่างยิ่งเกี่ยวกับการเชื่อมต่อ SSL และดูเหมือนจะยังไม่ได้รับการบำรุงรักษาอย่างแข็งขันในขณะนี้ koush / AndroidAsync คำอธิบายจาก GitHub: ซ็อกเก็ตแบบอะซิงโครนัส http (ไคลเอนต์ + เซิร์ฟเวอร์), websocket …

2
การส่ง websocket ping / pong frame จากเบราว์เซอร์
ฉันอ่านเกี่ยวกับข้อความ ping / pong ใน websockets เพื่อให้การเชื่อมต่อมีชีวิตอยู่ แต่ฉันไม่แน่ใจว่ามันคืออะไร เป็นประเภทเฟรมที่แตกต่างกันหรือไม่? (ฉันไม่เห็นวิธีการใด ๆ บนวัตถุ javascript WebSocket ใน Chrome ที่เกี่ยวข้องกับปิงปอง) หรือเป็นเพียงรูปแบบการออกแบบ (เช่นฉันส่ง "ping" หรือสตริงอื่น ๆ ไปยังเซิร์ฟเวอร์และให้มันตอบสนอง) ปิงปองเกี่ยวข้องกับเฟรมต่อเนื่องหรือไม่? เหตุผลที่ฉันถามคือฉันใช้เฟรมเวิร์ก python ที่ทำงานหลัง Mongrel2 ดังนั้นฉันจึงสงสัยว่ามีวิธีส่ง Mongrel2 ข้อความ ping / pong เฉพาะที่จะบอกให้การเชื่อมต่อยังคงมีชีวิตอยู่โดยที่แอพ python ของฉันไม่จำเป็นต้อง กังวลเกี่ยวกับมัน ฉันเดาว่าคล้ายกับการมีวิธี HTTP แยกต่างหาก และฉันคิดว่ากรอบข้อความ ping / pong เฉพาะอาจจะง่ายกว่า (โหลดบนเซิร์ฟเวอร์และเครือข่ายน้อยกว่า) กว่าสตริง "ping" แม้ว่านั่นอาจจะไม่สำคัญมากนัก …

5
การปิด WebSocket อย่างถูกต้อง (HTML5, Javascript)
ฉันกำลังเล่นกับ HTML5 WebSockets ฉันสงสัยว่าฉันจะปิดการเชื่อมต่ออย่างสง่างามได้อย่างไร เช่นจะเกิดอะไรขึ้นหากผู้ใช้รีเฟรชหน้าหรือเพียงแค่ปิดเบราว์เซอร์ มีพฤติกรรมแปลก ๆ เมื่อผู้ใช้รีเฟรชเพจโดยไม่โทรwebsocket.close()- เมื่อพวกเขากลับมาหลังจากรีเฟรชมันจะเข้าสู่websocket.oncloseเหตุการณ์

5
การเชื่อมต่อ Socket.IO พร้อมกันสูงสุด
คำถามนี้ถูกถามก่อนหน้านี้ แต่ไม่เร็ว ๆ นี้และไม่ได้คำตอบที่ชัดเจน การใช้ Socket.io มีจำนวนการเชื่อมต่อพร้อมกันสูงสุดที่สามารถรักษาได้ก่อนที่คุณจะต้องเพิ่มเซิร์ฟเวอร์อื่นหรือไม่? มีใครรู้บ้างไหมว่าสภาพแวดล้อมการผลิตที่ใช้งานอยู่ซึ่งใช้เว็บซ็อกเก็ต (โดยเฉพาะอย่างยิ่ง socket.io) ในขนาดใหญ่ ฉันอยากทราบว่าการตั้งค่าแบบใดที่ดีที่สุดสำหรับการเชื่อมต่อสูงสุด? เนื่องจาก Websockets ถูกสร้างขึ้นบน TCP ความเข้าใจของฉันก็คือเว้นแต่ว่าพอร์ตจะแชร์ระหว่างการเชื่อมต่อคุณจะถูก จำกัด โดยขีด จำกัด พอร์ต 64K แต่ผมเคยเห็นยังมีรายงานของการเชื่อมต่อโดยใช้ 512K Gretty ผมก็เลยไม่รู้

4
ความเข้าใจของฉันเกี่ยวกับ HTTP Polling, Long Polling, HTTP Streaming และ WebSockets
ฉันได้อ่านบทความมากมายใน SO และเว็บเกี่ยวกับคำหลักในหัวข้อคำถามของฉันและได้เรียนรู้มากมายจากพวกเขา คำถามบางคำถามที่ฉันอ่านเกี่ยวข้องกับความท้าทายในการนำไปใช้งานที่เฉพาะเจาะจงในขณะที่คำถามอื่น ๆ มุ่งเน้นไปที่แนวคิดทั่วไป ฉันแค่อยากให้แน่ใจว่าฉันเข้าใจแนวคิดทั้งหมดและเหตุผลว่าทำไมเทคโนโลยี X จึงถูกคิดค้นขึ้นเหนือเทคโนโลยี Y และอื่น ๆ ต่อไปนี้: Http Polling:โดยทั่วไป AJAX โดยใช้ XmlHttpRequest Http Long Polling: AJAX แต่เซิร์ฟเวอร์ยังคงตอบสนองต่อไปเว้นแต่เซิร์ฟเวอร์จะมีการอัปเดตทันทีที่เซิร์ฟเวอร์มีการอัปเดตเซิร์ฟเวอร์จะส่งไปจากนั้นไคลเอ็นต์สามารถส่งคำขออื่นได้ ข้อเสียคือข้อมูลส่วนหัวเพิ่มเติมที่ต้องส่งไปมาทำให้เกิดค่าใช้จ่ายเพิ่มเติม Http Streaming:คล้ายกับการสำรวจความคิดเห็นแบบยาว แต่เซิร์ฟเวอร์ตอบสนองด้วยส่วนหัวด้วย "Transfer Encoding: chunked" ดังนั้นเราจึงไม่จำเป็นต้องเริ่มต้นคำขอใหม่ทุกครั้งที่เซิร์ฟเวอร์ส่งข้อมูลบางส่วน (ดังนั้นจึงบันทึกค่าใช้จ่ายส่วนหัวเพิ่มเติม) ข้อเสียเปรียบตรงนี้คือเราต้อง "เข้าใจ" และคิดโครงสร้างของข้อมูลเพื่อแยกความแตกต่างระหว่างชิ้นส่วนต่างๆที่เซิร์ฟเวอร์ส่งมา Java Applet, Flash, Silverlight:พวกเขาให้ความสามารถในการเชื่อมต่อกับเซิร์ฟเวอร์ซ็อกเก็ตผ่าน tcp / ip แต่เนื่องจากเป็นปลั๊กอินนักพัฒนาจึงไม่ต้องการพึ่งพาพวกเขา WebSockets:เป็น API ใหม่ที่พยายามแก้ไขปัญหาสั้น ๆ ของวิธีการข้างต้นในลักษณะต่อไปนี้: ข้อได้เปรียบประการเดียวของ WebSockets …

2
จะมีทรัพยากรระบบจำนวนเท่าใดสำหรับการเปิดเว็บพ็อกเก็ต 1,000,000 เว็บ [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน7 ปีที่ผ่านมา ปรับปรุงคำถามนี้ Websocket เป็นสิ่งที่ดี แต่จะสามารถรองรับการเชื่อมต่อพร้อมกัน 1,000,000 ครั้งได้หรือไม่? จะมีทรัพยากรระบบจำนวนเท่าใดสำหรับการเปิดเว็บพ็อกเก็ต 1,000,000 เว็บ
122 websocket 

3
WebSocket ด้วย SSL
เป็นไปได้ไหมที่จะมี WebSockets พร้อม HTTPS เมื่อเปลี่ยนเป็น HTTPS WebSocket ของฉันจะส่งคืนข้อผิดพลาดด้านความปลอดภัยและทำงานได้อย่างสมบูรณ์กับ HTTP ปกติ ด้านล่างนี้เป็นตัวอย่างข้อมูล socket = new WebSocket("ws://my_www:1235");
117 ssl  websocket 

5
ฉันจะรับแฮช sha1 ของสตริงใน node.js ได้อย่างไร
ฉันกำลังพยายามสร้างเซิร์ฟเวอร์ websocket ที่เขียนด้วย node.js เพื่อให้เซิร์ฟเวอร์ทำงานได้ฉันต้องได้รับแฮช SHA1 ของสตริง สิ่งที่ผมต้องทำคือการอธิบายในมาตรา 5.2.2 หน้า 35 ของเอกสาร หมายเหตุ: ตัวอย่างเช่นถ้าค่าของ"Sec-WebSocket-Key" ส่วนหัวในการจับมือกันของลูกค้าเป็น"dGhlIHNhbXBsZSBub25jZQ=="เซิร์ฟเวอร์จะผนวก theString ในรูปแบบสตริง"258EAFA5-E914-47DA-95CA-C5AB0DC85B11" "dGhlIHNhbXBsZSBub25jZQ==258EAFA5-E914-47DA-95CA-C5AB0DC85B11"จากนั้นเซิร์ฟเวอร์จะใช้แฮช SHA-1 ของสตริงนี้โดยให้ค่า 0xb3 0x7a 0x4f 0x2c 0xc0 0x62 0x4f 0x16 0x90 0xf6 0x46 0x06 0xcf 0x38 0x59 0x45 0xb2 0xbe 0xc4 0xea จากนั้นค่านี้จะถูกเข้ารหัส base64 เพื่อให้ค่า"s3pPLMBiTxaQ9kYGzzhZRbK+xOo="ซึ่งจะส่งคืนใน"Sec-WebSocket-Accept"ส่วนหัว

3
โหลดบาลานซ์เว็บซ็อกเก็ต
ฉันมีคำถามเกี่ยวกับวิธีโหลดซ็อกเก็ตเว็บบาลานซ์ ฉันมีเซิร์ฟเวอร์ที่รองรับเว็บซ็อกเก็ต www.mydomain.comเบราว์เซอร์เชื่อมต่อไปยังเว็บไซต์ของฉันและแต่ละคนเปิดเว็บเพื่อซ็อกเก็ต ด้วยวิธีนี้แอปโซเชียลเน็ตเวิร์กของฉันสามารถส่งข้อความไปยังลูกค้าได้ ตามเนื้อผ้าโดยใช้คำขอ HTTP เพียงอย่างเดียวฉันจะขยายขนาดโดยการเพิ่มเซิร์ฟเวอร์ที่สองและตัวโหลดบาลานเซอร์หน้าเว็บเซิร์ฟเวอร์ทั้งสอง ด้วยซ็อกเก็ตเว็บการเชื่อมต่อจะต้องเชื่อมต่อโดยตรงกับเว็บเซิร์ฟเวอร์ไม่ใช่ตัวโหลดบาลานเซอร์เพราะหากเครื่องมีขีด จำกัด ทางกายภาพของพอร์ตที่เปิด 64k และไคลเอนต์กำลังเชื่อมต่อกับตัวโหลดบาลานเซอร์ฉันก็จะไม่รองรับ ผู้ใช้งานพร้อมกันมากกว่า 64k แล้วฉันจะทำอย่างไร - รับไคลเอ็นต์เพื่อเชื่อมต่อโดยตรงกับเว็บเซิร์ฟเวอร์ (แทนที่จะเป็นตัวโหลดบาลานเซอร์) เมื่อโหลดหน้า? ฉันเพียงแค่โหลด JavaScript จากโหนดหรือไม่และตัวจัดสรรภาระงาน (หรืออะไรก็ตาม) จะปรับเปลี่ยน URL ของสคริปต์แบบสุ่มทุกครั้งที่มีการร้องขอหน้าแรกหรือไม่ จัดการเริ่มระลอก? เบราว์เซอร์จะสังเกตว่าการเชื่อมต่อถูกปิดเมื่อเว็บเซิร์ฟเวอร์ปิดตัวลง ฉันสามารถเขียนโค้ด JavaScript เพื่อพยายามเปิดการเชื่อมต่ออีกครั้ง แต่โหนดจะหายไปชั่วขณะ ดังนั้นฉันเดาว่าฉันจะต้องกลับไปที่ตัวจัดสรรภาระงานเพื่อสอบถามที่อยู่ของโหนดถัดไปที่จะใช้? ฉันสงสัยเกี่ยวกับตัวจัดสรรภาระงานที่ส่งการเปลี่ยนเส้นทางในคำขอเริ่มต้นเพื่อให้เบราว์เซอร์ร้องขอwww.mydomain.comและเปลี่ยนเส้นทางไปยังwww34.mydomain.comไฟล์. ซึ่งทำงานได้ค่อนข้างดีจนกว่าโหนดจะหยุดทำงานและเว็บไซต์เช่น Facebook จะไม่ทำเช่นนั้น พวกเขาทำมันได้อย่างไร?

6
ตัวอย่างง่ายๆของลูกค้า javax.websocket
ใครช่วยให้ตัวอย่างการใช้ไคลเอนต์ websocket อย่างง่าย ๆ ให้ฉันได้javax.websocketไหม ฉันต้องการเชื่อมต่อกับ websocket (ws: //socket.example.com: 1234) ส่งข้อความ (เพิ่มช่องทาง) และฟังข้อความ ข้อความทั้งหมด (ส่งและรับฟัง) อยู่ในรูปแบบ JSON และ btw ห้องสมุดนี้ดีที่สุดสำหรับการสื่อสาร websocket ง่ายๆหรือไม่?
104 java  websocket 

3
Faye กับ Socket.IO (และ Juggernaut)
ดูเหมือนว่าSocket.IOจะเป็นไลบรารีจำลอง WebSocket ที่ได้รับความนิยมและมีการใช้งานมากที่สุด Juggernautใช้เพื่อสร้างระบบ pub / sub ที่สมบูรณ์ Fayeยังเป็นที่นิยมและใช้งานอยู่และมีไลบรารีจาวาสคริปต์ของตัวเองทำให้ฟังก์ชันการทำงานสมบูรณ์เทียบเท่ากับ Juggernaut Juggernaut ใช้โหนดสำหรับเซิร์ฟเวอร์และ Faye สามารถใช้โหนดหรือแร็คได้ Juggernaut ใช้ Redis เพื่อการคงอยู่ ( การแก้ไข:ใช้ Redis สำหรับ pub / sub) และ Faye จะเก็บสถานะไว้ในหน่วยความจำเท่านั้น ทุกอย่างข้างต้นถูกต้องหรือไม่? Faye กล่าวว่ามันใช้Bayeux - ฉันคิดว่า Juggernaut ไม่ทำเช่นนี้ - นั่นเป็นเพราะ Juggernaut อยู่ในระดับต่ำกว่า (IE ฉันสามารถใช้ Bayeux โดยใช้ Juggernaut) Faye สามารถเปลี่ยนไปใช้ไลบรารีจาวาสคริปต์เบราว์เซอร์ Socket.IO ได้หรือไม่ถ้าต้องการ หรือห้องสมุดจาวาสคริปต์ของพวกเขาทำสิ่งที่แตกต่างกันโดยพื้นฐาน? มีความแตกต่างทางสถาปัตยกรรม …

10
Websocket API เพื่อแทนที่ REST API?
ฉันมีแอปพลิเคชันที่ฟังก์ชันหลักทำงานแบบเรียลไทม์ผ่านเว็บซ็อกเก็ตหรือการสำรวจความคิดเห็นแบบยาว อย่างไรก็ตามเว็บไซต์ส่วนใหญ่เขียนในแนว RESTful ซึ่งเหมาะสำหรับแอปพลิเคชันและลูกค้ารายอื่น ๆ ในอนาคต อย่างไรก็ตามฉันกำลังคิดเกี่ยวกับการเปลี่ยนไปใช้ websocket API สำหรับฟังก์ชันไซต์ทั้งหมดโดยห่างจาก REST นั่นจะทำให้ง่ายขึ้นสำหรับฉันในการรวมคุณสมบัติเรียลไทม์เข้ากับทุกส่วนของไซต์ สิ่งนี้จะทำให้การสร้างแอปพลิเคชันหรือไคลเอนต์มือถือยากขึ้นหรือไม่? ฉันพบว่าบางคนกำลังทำสิ่งนี้อยู่แล้ว: SocketStream

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.