Socket.IO กับ Twisted [ปิด]

ความคิดของฉันคือการสร้างแอปพลิเคชันแชทง่ายๆ สำหรับ iOS และ Android ไม่ว่าในกรณีใด คำถามของฉันเกี่ยวข้องกับฝั่งเซิร์ฟเวอร์ ตัวเลือกที่ดีที่สุดในการสร้างแอปพลิเคชันแชท จากสิ่งที่ฉันได้อ่านมาคือการสร้างซ็อกเก็ต เมื่ออ้างถึงฐานข้อมูล ความตั้งใจของฉันคือการใช้ MySQL ซึ่งอาจเป็นสิ่งสำคัญที่ต้องคำนึงถึงเพื่อเลือกความเป็นไปได้อย่างใดอย่างหนึ่ง

คำถามของฉันคือในแง่ของความสามารถในการปรับขนาด ความเร็ว และความปลอดภัย ซึ่งเป็นตัวเลือกที่ดีที่สุด: การสร้างซ็อกเก็ตด้วย Python โดยใช้ Twisted หรือด้วย NodeJS ใช้ Socket.IO?

ฉันเดาว่าอาจมีความเป็นไปได้อื่น ๆ ในการสร้างซ็อกเก็ตที่มีประสิทธิภาพ แต่ตอนนี้ฉันกำลังพิจารณาสองสิ่งนี้ ฉันจะขอบคุณมากหากคุณสามารถให้คำแนะนำฉันได้


person IOS_DEV    schedule 31.10.2013    source แหล่งที่มา
comment
คำถามที่ดีหลายข้อทำให้เกิดความคิดเห็นในระดับหนึ่งจากประสบการณ์ของผู้เชี่ยวชาญ แต่คำตอบสำหรับคำถามนี้มักจะขึ้นอยู่กับความคิดเห็นเกือบทั้งหมด มากกว่าข้อเท็จจริง การอ้างอิง หรือความเชี่ยวชาญเฉพาะด้าน ตัวเลือกที่ดีที่สุดจะขึ้นอยู่กับพารามิเตอร์มากเกินไปที่จะตอบในรูปแบบนี้   -  person Lix    schedule 31.10.2013
comment
แต่ตัวอย่างเช่น ในแง่ของความเร็ว แน่นอนว่าต้องมีคำตอบที่เป็นกลาง ไม่ว่าในกรณีใด การรับฟังความคิดเห็นจากผู้ที่เคยร่วมงานกับห้องสมุดเหล่านี้ไม่ใช่เรื่องแย่   -  person IOS_DEV    schedule 31.10.2013
comment
คงจะไม่ดีเพราะคำตอบที่อิงจากความคิดเห็นเพียงอย่างเดียวไม่ถือว่ามีประโยชน์ใน Stack Overflow   -  person Lix    schedule 31.10.2013
comment
@IOS_DEV ไม่จำเป็นต้องมีคำตอบที่เป็นกลางสำหรับความเร็ว เนื่องจากอาจขึ้นอยู่กับภาระงานของคุณและสิ่งที่คุณตั้งใจจะทำ นอกจากนี้ ความเร็วมักเป็นหนึ่งในข้อกังวลสุดท้ายที่คุณควรมี หากคุณกำลังพูดถึงแอปพลิเคชั่นแชทธรรมดา ๆ โดยทั่วไปคุณไม่จำเป็นต้องมีสิ่งใดที่มีประสิทธิภาพสูงเป็นพิเศษ คำถามที่แท้จริงคือ: คุณอยากจะเขียน Python หรือ JavaScript มากกว่ากัน เพราะเหตุใด และอันไหนที่ช่วยให้คุณได้รับ MVP และทำงานได้เร็วขึ้น? คำแนะนำของฉันคือใช้เวลาลองใช้แต่ละอัน รวบรวมหลักฐานแอปแชทแนวคิดอย่างรวดเร็ว   -  person Brian Campbell    schedule 31.10.2013
comment
@Lix แต่ความคิดเห็นอาจสะท้อนได้ว่าตัวเลือกนั้นเป็นมิตรกับนักพัฒนามากกว่าหรือไม่ ซึ่งเป็นสิ่งสำคัญเช่นกัน นอกจากนี้ หากใครมีความคิดเห็นที่เป็นรูปธรรมเกี่ยวกับความคิดเห็นบางส่วน อาจอิงจากประสบการณ์ส่วนตัวหรือแง่มุมที่เป็นรูปธรรมของห้องสมุดก็ได้ ไม่ว่าพวกเขาจะคิดเห็นด้วยเหตุผลใดก็ตาม เหตุผลนี้สามารถช่วยให้ฉันเลือกหนึ่งในตัวเลือกได้   -  person IOS_DEV    schedule 31.10.2013
comment
@IOS_DEV - นี่คือแนวทางและกฎของ Stack Overflow เราไม่ได้อยู่ที่นี่เพื่อหารือเกี่ยวกับความถูกต้องของพวกเขา หากคุณมีปัญหาหรือความคิดเห็นเกี่ยวกับวิธีการทำงานของไซต์ โปรดไปที่ Meta Stack Overflow ซึ่งเป็นไซต์ที่มีไว้เพื่อหารือเกี่ยวกับ Stack Overflow และไซต์อื่นๆ ในเครือข่าย Stack Exchange   -  person Lix    schedule 31.10.2013
comment
โอเค @BrianCampbell ฉันคิดว่าฉันจะลองทั้งคู่เพื่อดูความแตกต่าง   -  person IOS_DEV    schedule 31.10.2013
comment
ขอบคุณ @Lix ฉันจะพิจารณาคำถามเหล่านี้อย่างจริงจังมากขึ้นสำหรับคำถามในอนาคต! ;) ตอนนี้คุณแนะนำให้ฉันทำอะไรกับอันนี้?   -  person IOS_DEV    schedule 31.10.2013
comment
@IOS_DEV - ข้อเสนอแนะเกี่ยวกับโพสต์หรือไม่ ฉันขอแนะนำให้คุณลองใช้วิธีใดวิธีหนึ่งที่คุณระบุรายละเอียด และเฉพาะในกรณีที่คุณพบปัญหาใดปัญหาหนึ่งเท่านั้น ให้กลับมาและโพสต์เกี่ยวกับวิธีนั้นรวมถึงโค้ดที่เป็นปัญหาด้วย ขณะนี้ฉันคิดว่าควรลบโพสต์นี้ออก อย่างไรก็ตาม นี่เป็นเพียงความคิดเห็นของฉันเท่านั้น   -  person Lix    schedule 31.10.2013
comment
@Lix ตกลง ฉันจะใช้ StackOverFlow หากฉันมีคำถามเฉพาะเกี่ยวกับโค้ดเมื่อฉันพยายามใช้ตัวเลือกใดตัวเลือกหนึ่ง ฉันจะไม่ลบคำถามในตอนนี้ ฉันจะรอดูว่ามีใครมีอะไรน่าสนใจจะพูดหรือไม่   -  person IOS_DEV    schedule 31.10.2013


คำตอบ (1)


การเปรียบเทียบ Twisted และ Socket.io คือการเปรียบเทียบแอปเปิ้ลกับรถบรรทุกที่บรรทุกแอปเปิ้ล Twisted เป็นไลบรารีที่ให้ฟังก์ชันการเขียนโปรแกรมเชิงเหตุการณ์แก่ Python ในจาวาสคริปต์นั้นเป็นเพียงจาวาสคริปต์เท่านั้น (ไม่ว่าจะเป็น node.js หรือเว็บเบราว์เซอร์ หรือแม้แต่แรด)

การเปรียบเทียบที่เหมาะสมกว่าคือการเปรียบเทียบ Socket.io บน node.js กับ Socket.io บน Python แม้ว่าจะมีการใช้งานเซิร์ฟเวอร์ socket.io บนโหนดหลักเพียงครั้งเดียว แต่ก็มีหลายอย่างสำหรับ Python:

(นำมาจากวิกิ socket.io: https://github.com/learnboost/socket.io/wiki)

คุณสามารถใช้ socket.io ของคุณเองใน Python โดยใช้ Twisted ได้หากต้องการ โปรโตคอล socket.io ได้รับการบันทึกไว้ที่นี่: https://github.com/LearnBoost/socket.io-spec แต่นั่นอาจทำลายจุดประสงค์ของ socket.io โดยจะสรุปรายละเอียดระดับต่ำของการสื่อสารทางเว็บแบบเรียลไทม์ และช่วยให้คุณมีสมาธิกับการเขียนตรรกะทางธุรกิจของคุณ

ในฝั่งไคลเอ็นต์ คุณจะต้องปรับใช้สคริปต์ socket.io เดียวกันกับเบราว์เซอร์ ไม่ว่าคุณจะตัดสินใจเขียนเซิร์ฟเวอร์เป็นภาษาใด

เกี่ยวกับภาษาที่จะเลือก: หลักการทั่วไปของฉันคือเลือกภาษาที่คุณพอใจที่สุด คุณจะมีปัญหามากพอในการดีบักตรรกะทางธุรกิจของคุณ อย่าทำให้มันซับซ้อนโดยใช้ภาษาที่ไม่คุ้นเคย

ทั้งสองภาษามีการต่อสู้ที่ดุเดือด (ใช่แล้ว แม้แต่ node.js ซึ่งน่าประหลาดใจเมื่อพิจารณาว่ามันยังเด็กแค่ไหน) ตัวอย่างเช่น Python ถูกใช้ในการผลิตบริการที่มีปริมาณการใช้งานสูงเช่น Dropbox ปัจจุบันมีการใช้งานโหนดในบริการที่มีปริมาณการใช้งานสูงเช่น LinkedIn Mobile

person slebetman    schedule 31.10.2013
comment
ขอบคุณ @slebetman! คำตอบของคุณทำให้ฉันเข้าใจหลายอย่าง - person IOS_DEV; 31.10.2013