chatRoom.scala.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. @(username: String)(implicit r: RequestHeader)
  2. $(function() {
  3. var WS = window['MozWebSocket'] ? MozWebSocket : WebSocket
  4. var chatSocket = new WS("@routes.Application.chat(username).webSocketURL()")
  5. var sendMessage = function() {
  6. chatSocket.send(JSON.stringify(
  7. {text: $("#talk").val()}
  8. ))
  9. $("#talk").val('')
  10. }
  11. var receiveEvent = function(event) {
  12. var data = JSON.parse(event.data)
  13. // Handle errors
  14. if(data.error) {
  15. chatSocket.close()
  16. $("#onError span").text(data.error)
  17. $("#onError").show()
  18. return
  19. } else {
  20. $("#onChat").show()
  21. }
  22. // Create the message element
  23. var el = $('<div class="message"><span></span><p></p></div>')
  24. $("span", el).text(data.user)
  25. $("p", el).text(data.message)
  26. $(el).addClass(data.kind)
  27. if(data.user == '@username') $(el).addClass('me')
  28. $('#messages').append(el)
  29. // Update the members list
  30. $("#members").html('')
  31. $(data.members).each(function() {
  32. var li = document.createElement('li');
  33. li.textContent = this;
  34. $("#members").append(li);
  35. })
  36. }
  37. var handleReturnKey = function(e) {
  38. if(e.charCode == 13 || e.keyCode == 13) {
  39. e.preventDefault()
  40. sendMessage()
  41. }
  42. }
  43. $("#talk").keypress(handleReturnKey)
  44. chatSocket.onmessage = receiveEvent
  45. })