Browse Source

working online chat

Maxim Sokhatsky 11 years ago
parent
commit
68d27c2dbf
2 changed files with 21 additions and 1 deletions
  1. 15 1
      apps/web/priv/static/doc/svg.js
  2. 6 0
      apps/web/src/okey.erl

+ 15 - 1
apps/web/priv/static/doc/svg.js

@@ -58,6 +58,15 @@ function handle_web_socket(body) {
             try{removeOnlineUser(id)}catch(e){}
             addOnlineUser(id,name+" "+surname,"insertTop");
             break;
+        case 'chat_message':
+            var from = dec(body).value[0][1].value;
+            var to = dec(body).value[0][2].value;
+            var message = dec(body).value[0][3].value;
+            chatMessage(currentChat,"1",from,from+":\n"+message.encodeHTML());
+    onlineHover();
+    mouseWheelHandler({'detail':-10000,'wheelDelta':-10000});
+    onlineHoverOut();
+            break;
         case 'offline':
             var id = dec(body).value[0][1].value;
             var name = dec(body).value[0][2].value;
@@ -498,8 +507,13 @@ function chatEditor(evt) {
     var chatContainer = evt.target.getAttribute("xmlns:data");
     if (evt.keyCode == 13 && evt.metaKey == false) {
         var e = evt.target; //document.getElementById('edit');
+        console.log(e);
         if (e.innerText.trim() != ""){
-            chatMessage(chatContainer,"100","Maxim",e.innerText.trim().encodeHTML());
+            var text = e.innerText.trim().encodeHTML();
+            chatMessage(chatContainer,"100","Maxim",text);
+//            if (null != currentChat)
+                ws.send(enc(tuple(atom('client'),
+                    tuple(atom('message'),bin(document.user),bin(chatContainer.substr(5)),bin(text)))));
             e.innerHTML = '';
         }
     } else if (evt.keyCode == 13 && evt.metaKey == true) {

+ 6 - 0
apps/web/src/okey.erl

@@ -177,6 +177,7 @@ event(attach) ->
     {ok,GamePid} = game_session:start(self()),
     wf:session(<<"game_pid">>,GamePid),
     User = user(),
+    wf:reg(User#user.id),
     wf:info(?MODULE,"User Attach: ~p",[User]),
     gproc:set_value({p,l,broadcast},{wf:peer(?REQ),User}),
     wf:send(broadcast,{user_online,User}),
@@ -246,6 +247,11 @@ event(pause) ->
 
 %event({binary,M}) -> {ok,<<"Hello">>};
 
+event({client,{message,From,To,Message}}) ->
+    wf:info(?MODULE,"Chat Message from ~p to ~p:~n ~p~n",[From,To,Message]),
+    wf:send(To,{server,{chat_message,From,To,Message}}),
+    ok;
+
 event({client,Message}) ->
     wf:info(?MODULE,"Client: ~p", [Message]),
     case wf:session(<<"game_pid">>) of