2013-07-20 13 views
18

में सरल वेबसाइट्स मैं स्कैला/अक्का/प्ले का उपयोग करके एक सरल वेबसाइट एप्लिकेशन बनाना चाहता हूं।स्कैला/अक्का/प्ले

उदाहरणों (जैसे webchat या recent talk at the Scala Days) से मैं क्या देखता हूं, जावास्क्रिप्ट/कॉफ़ीस्क्रिप्ट, एचटीएमएल टेम्पलेट्स आदि के बीच एक मिश्रण है।

मेरे वेबसाइकिल एप्लिकेशन के ग्राहक भी मूल मोबाइल ऐप्स (एंड्रॉइड, आईओएस) होंगे, इसलिए मुझे "ब्राउज़र से बाहर" सोचने की आवश्यकता है।

मैं एक वेबशॉट एप्लिकेशन कैसे बना सकता हूं जो आसानी से "हैलो" स्ट्रिंग को दबा सकता है?

+0

मैं उलझन में। वेबसाकेट एक वर्कअराउंड है जो मौजूद है क्योंकि HTTP बिडरेक्शनल स्टेटफुलर कनेक्शन की अनुमति नहीं देता है। जब आप मूल ऐप विकसित कर रहे हों तो आपके पास उस सीमा नहीं है (सिवाय इसके कि आप अपाचे कॉर्डोवा या इसी तरह का उपयोग कर रहे हैं, लेकिन फिर आप जावास्क्रिप्ट का उपयोग करेंगे)। तो आप इस मार्ग क्यों ले रहे हैं? – Carsten

+0

हाय कार्स्टन। मुझे किसी भी अन्य डुप्लेक्स प्रोटोकॉल के बारे में पता नहीं है जो सर्वर से क्लाइंट तक रीयल-टाइम डेटा पुश की अनुमति देता है। देशी ऐप्स (जैसे जीसीएम) के लिए पुश अधिसूचना सेवाएं रीयल-टाइम नहीं हैं। क्या आप किसी वैकल्पिक तरीके से जानते हैं? – ticofab

+0

0MQ पब/सब स्ट्रीमिंग के लिए एक समाधान है। http://zeromq.org/ –

उत्तर

18

वेबसॉकेट कनेक्शन में दो भाग हैं: सर्वर और क्लाइंट। तुम बस Play2 का उपयोग कर सर्वर हिस्सा बनाने के लिए और एंड्रॉयड (websocket-android-phonegap देखें), iOS (Unitt देखें), जावास्क्रिप्ट अनुप्रयोग के साथ एक ग्राहक को लागू कर सकते हैं ...

यहाँ एक बहुत बुनियादी WebSocket http://blog.tksfz.org/2012/10/12/websockets-echo-using-play-scala-and-actors-part-i/ से लिया कनेक्शन के लिए एक उदाहरण है :

GET /connect Application.index 

सर्वर फिर से है:

package controllers 

import play.api.mvc._ 

object Application extends Controller { 
    def index = WebSocket.using[String] { 
    val out = Enumerator.imperative[String]() 
    val in = Iteratee.foreach[String] { 
     msg => 
     out.push(msg) 
    } 
    (in, out) 
    } 
} 

आप केवल एक मार्ग है कि आपके नियंत्रक conf/routes को इंगित करता है स्थापित करने के लिए चलाने के लिए ady। फिर आप अपने वेबसाकेट से जावास्क्रिप्ट एप्लिकेशन, एंड्रॉइड एप्लिकेशन आदि से कनेक्ट कर सकते हैं ... क्लाइंट साइड एक और मामला है।

आप क्रोम या क्रोमियम का उपयोग करते हैं, बस डेवलपर उपकरण में अपने JavaScript कंसोल खोलकर और आप ऐसे ही अपने सर्वर से कनेक्ट कर सकते हैं:

ws = new WebSocket('ws://localhost:9000/connect') 
ws.onmessage = function(message) { console.log(message); }; 
ws.send('test') 

यह तुम वापस अपना संदेश भेजने और जावास्क्रिप्ट में यह प्रवेश करेंगे कंसोल जब भी आप एक भेजते हैं।

आप केवल http://www.websocket.org/echo.html इको परीक्षण का उपयोग कर सकते हैं और इसे अपने 'ws://localhost:9000/connect' यूआरएल फ़ीड कर सकते हैं।

+8

'Enumerator.imperative' को Play के हाल के संस्करणों से बहिष्कृत या हटा दिया गया प्रतीत होता है, यह एक नए संस्करण में एक गूंज ऐप है: http://blog.controlgroup.com/2013/10/17/simple-websockets-example- play-2-2-0/उम्मीद है कि यह किसी और की मदद करता है ... – spacemanaki

2

या तो आप एक दर्द वर्ष सॉकेट इस्तेमाल कर सकते हैं, लेकिन आप (यानी फायरवॉल के माध्यम से) पोर्ट अग्रेषण के साथ समस्याओं होगा या आप इस तरह के जावा में इस एक के रूप में WebSocket क्लाइंट लाइब्रेरी, इस्तेमाल कर सकते हैं कर सकते हैं: http://www.eclipse.org/jetty/documentation/current/jetty-websocket-client-api.html

+0

न्यूनतम ढांचा निर्भरता महान – Kruser