2013-02-04 29 views
9

Tôi đang cố gắng thực hiện một bằng chứng khái niệm rất đơn giản bằng cách sử dụng các ổ cắm web Play 2.0.Không tìm thấy tiêu đề yêu cầu WebSocket cơ bản Play 2.0

Đây là những gì tôi đang làm ngay bây giờ:

  • Xác định WebSocket trong bộ điều khiển của tôi:
def wsrequest = WebSocket.using[String] { request => 

    // Send a single 'Hello!' message 
    val out = Enumerator("Hello!") 

// Just consume and ignore the input 
    val in = Iteratee.consume[String]() 

    // tie the in and out values to each other 
    (in, out) 
} 
  • Thêm tuyến đường trong tập tin tuyến đường của tôi
GET  /wsrequest     controllers.Application.wsrequest 

  • Sử dụng sau bên trong javascript trong index.scala.html tôi:

var sock = new WS("@routes.Application.wsrequest().webSocketURL()") 

Tuy nhiên khi tôi cố gắng và biên dịch này, tôi nhận được một lỗi:


[info] Compiling 5 Scala sources and 1 Java source to target\scala-2.9.1\classes... 
[error] target\scala-2.9.1\src_managed\main\views\html\index.template.scala:32: Cannot find any HTTP Request Header here 
[error] Error occurred in an application involving default arguments. 
[error]    var sock = new WS(""""),_display_(Seq[Any](/*11.33*/routes/*11.39*/.Application.wsrequest().webSocketURL())),format.raw/*11.78*/("""") 
[error]                             ^
[error] one error found 


Tôi có bỏ lỡ một bước không? Hay tôi đã phạm sai lầm trong những gì tôi đã làm ở trên?

Trả lời

15

Mẫu của bạn cần một tiêu đề yêu cầu tiềm ẩn, như thế này:

@(message: String)(implicit request: RequestHeader) 
+0

Thêm một lưu ý chung: Hãy chắc chắn rằng bạn không phân công lại "yêu cầu" trong một không nhằm mục đích cách trước ngầm sử dụng nó. Điều này bắt gặp tôi và dẫn đến cùng một thông báo "Không thể tìm thấy bất kỳ yêu cầu HTTP nào ở đây". –

Các vấn đề liên quan