मैं पहली पूर्ण बाकी परियोजना बनाने के साथ एक बहुत संघर्ष कर रहा था। मैंने जो उदाहरण पाया है वह हैलो वर्ल्ड लेवल पर ... मैंने कुछ ब्लॉग पढ़े हैं, कुछ टिप्पणियां हैं और मैंने उदाहरण प्रोजेक्ट बनाने का फैसला किया है। यह स्केला/अक्का/स्प्रे/mysql पर आधारित है
यह WebSocket ग्राहकों को सूचित करने के कि डेटा बदला गया था आदि आप https://github.com/vixxx123/scalasprayslickexample
यहाँ पर यह भी देख सकते हैं के साथ पूर्ण काम कर उदाहरण है कि इस परियोजना से मार्ग का नमूना कोड है :
val personCreateHandler = actorRefFactory.actorOf(RoundRobinPool(2).props(Props[CreateActor]), s"${TableName}CreateRouter")
val personPutHandler = actorRefFactory.actorOf(RoundRobinPool(5).props(Props[UpdateActor]), s"${TableName}PutRouter")
val personGetHandler = actorRefFactory.actorOf(RoundRobinPool(20).props(Props[GetActor]), s"${TableName}GetRouter")
val personDeleteHandler = actorRefFactory.actorOf(RoundRobinPool(2).props(Props[DeleteActor]), s"${TableName}DeleteRouter")
val userRoute =
pathPrefix("person") {
pathEnd {
get {
ctx => personGetHandler ! GetMessage(ctx, None)
} ~
post {
entity(as[Person]) {
entity =>
ctx => personCreateHandler ! CreateMessage(ctx, entity)
}
}
} ~
pathPrefix (IntNumber){
entityId => {
pathEnd {
get {
ctx => personGetHandler ! GetMessage(ctx, Some(entityId))
} ~ put {
entity(as[Person]) { entity =>
ctx => personPutHandler ! PutMessage(ctx, entity.copy(id = Some(entityId)))
}
} ~ delete {
ctx => personDeleteHandler ! DeleteMessage(ctx, entityId)
} ~ patch {
ctx => personPutHandler ! PatchMessage(ctx, entityId)
}
}
}
}
}
और अभिनेता हैंडलर बनाने से नमूना:
override def receive: Receive = {
case CreateMessage(ctx, person) =>
val localCtx = ctx
connectionPool withSession {
implicit session =>
try {
val resId = PersonsIdReturning += person
val addedPerson = person.copy(id = Some(resId.asInstanceOf[Int]))
localCtx.complete(addedPerson)
publishAll(CreatePublishMessage(TableName, localCtx.request.uri + "/" + addedPerson.id.get, addedPerson))
L.debug(s"Person create success")
} catch {
case e: Exception =>
L.error(s"Ups cannot create person: ${e.getMessage}", e)
localCtx.complete(e)
}
}
}
अभी भी दो महत्वपूर्ण बातें याद आ रही हैं: OAuth2 और notifica धक्का websocket
स्रोत
2015-04-16 13:20:24
के माध्यम से विशिष्ट उपयोगकर्ता/कनेक्शन के लिए tions मैं यहां आपका उदाहरण देख रहा था और देखा कि आप सीडीआई का उपयोग करते हैं। किसी भी विशेष कारण के लिए आपने इसका उपयोग क्यों किया? – EdMelo
सीडीआई द्वारा आप निर्भरता इंजेक्शन का मतलब है? – Gangstead
हां।/* स्टैकओवरफ्लो को अधिक वर्णों की आवश्यकता होती है ... */ – EdMelo