indicateur user online sur le chat (fixes #5)

This commit is contained in:
afornerot 2019-10-28 11:39:08 +01:00
parent 7265099724
commit 5d877dd8ca
2 changed files with 57 additions and 6 deletions

View File

@ -58,6 +58,7 @@
<input id="sendbymail" type="checkbox" id="item_essential" name="item[essential]" style="float:right" class='switch' ></input>
<label class="custom-control-label" for="sendbymail">Envoyer par Mail ?</label>
<a id="sendbtn" class="btn btn-success" style="margin-top:5px; width:100%; margin-bottom:15px">Envoyer</a>
<div id="useronline" style="margin-bottom:10px"></div>
</div>
@ -222,16 +223,18 @@
],
height: 150
});
},500);
},1000);
$(".switch").bootstrapSwitch();
$("#mymodal-sendmail").removeAttr("tabindex");
websocket();
/*
setInterval(function(){
islive();
}, 15000);
*/
});
{% if websocket_activate and app.user %}
@ -303,6 +306,28 @@
if(payload.alert) {
alert(payload.alert);
}
if(payload.islive) {
if(payload.userid!={{app.user.id}}) {
console.log("Received message islive", payload.userid);
addOnline(payload.userid, payload.useravatar, payload.userlastname, payload.userfirstname);
{% if app.user.visible %}
event={mykey: "{{userkey}}", type: "meto", userid: {{app.user.id}}, useravatar: "{{app.user.avatar}}", userlastname: "{{ app.user.lastname}}", userfirstname: "{{ app.user.firstname }}" };
session.publish("websocket/channel/{{groupid}}", event);
{% endif %}
}
}
if(payload.meto) {
console.log("Received message meto", payload.userid, payload.useravatar, payload.userlastname, payload.userfirstname);
addOnline(payload.userid, payload.useravatar, payload.userlastname, payload.userfirstname);
}
if(payload.isdead) {
console.log("Received message isdead", payload.userid);
$("#online"+payload.userid).remove();
}
});
});
@ -472,11 +497,24 @@
function islive() {
if(!session) return;
isalive=true;
event={mykey: "{{userkey}}", type: "islive", userid: {{app.user.id}}};
{% if app.user.visible %}
addOnline({{app.user.id}}, "{{app.user.avatar}}", "{{app.user.lastname}}", "{{app.user.firstname}}");
event={mykey: "{{userkey}}", type: "islive", userid: {{app.user.id}}, useravatar: "{{app.user.avatar}}", userlastname: "{{app.user.lastname}}", userfirstname: "{{app.user.firstname}}" };
console.log("send islive");
session.publish("websocket/channel/{{groupid}}", event);
{% endif %}
}
function addOnline(userid, useravatar, userlastname, userfirstname) {
if(!$("#online"+userid).length) {
html = "<span id='online"+userid+"'>";
html+= "<img style='cursor:pointer; width:30px; height:30px; margin-right:5px;' onclick='seeUser("+userid+")' title='"+userlastname+" "+userfirstname+"' id='user_avatar_img' src='/{{ alias }}/uploads/avatar/"+useravatar+"' class='avatar'>";
html+= "</span>";
$("#useronline").append(html);
}
}
{% endif %}

View File

@ -52,9 +52,7 @@ class WebsocketTopic implements TopicInterface
public function onUnSubscribe(ConnectionInterface $connection, Topic $topic, WampRequest $request)
{
//this will broadcast the message to ALL subscribers of this topic.
$topic->broadcast(['log' => "Alive = ".$event["userid"]]);
$topic->broadcast(['log' => $connection->resourceId . " has left " . $topic->getId(). " || userid = ".$connection->userId]);
$topic->broadcast(['isdead' => 'isdead','userid'=>$connection->userId]);
}
@ -90,10 +88,25 @@ class WebsocketTopic implements TopicInterface
if($group&&$usergroup&&$user) {
if($event["type"]=="islive") {
$topic->broadcast(['log' => "Alive = ".$event["userid"]]);
$topic->broadcast([
"islive" => "islive",
"userid" => $event["userid"],
"useravatar" => $event["useravatar"],
"userlastname" => $event["userlastname"],
"userfirstname" => $event["userfirstname"],
]);
$connection->userId=$event["userid"];
}
if($event["type"]=="meto") {
$topic->broadcast([
"meto" => "meto",
"userid" => $event["userid"],
"useravatar" => $event["useravatar"],
"userlastname" => $event["userlastname"],
"userfirstname" => $event["userfirstname"],
]);
}
if($event["type"]=="add") {
if(array_key_exists("mail",$event)) {