'Laravel chat app : Unable to deliver messages to a specific user
I have been trying to develop a chat app on Laravel with socket.io. Now, I am facing problem that is when a user is sending a message to a specific user, the message is being delivered to all the available users. May I know the section of code you need to help me out? Or there's some other area where I can specifically look into.
const express = require("express");
const app = express();
const server = require('http').createServer(app);
const io = require("socket.io")(server, {
cors: { origin: "*" }
});
server.listen(3000, () => {
console.log('Server is running');
io.on("connection", function(socket) {
console.log("User" + socket.id);
socket.on("messageSent", function(message, senderId) {
socket.broadcast.emit("messageSent", message, this.socket.id)
console.log(this.socket.id);
});
//msg
socket.on("msgSent", function(message) {
socket.broadcast.emit("msgSent", message)
});
socket.on("clientMmsgSent", function(message) {
socket.broadcast.emit("clientMmsgSent", message)
});
});
});
Other code:
<sc ript>
var socket = io("{{config('app.server_url')}}");
function sendMessage(event) {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
//console.log('test');
event.preventDefault();
if (event.keyCode === 13) {
var msg = document.getElementById('msg').value;
var client_id = document.getElementById('client_id').value;
var operator_id = document.getElementById('operator_id').value;
//console.log(smg);
$.ajax({
type: "POST",
url: "{{route('send.msg')}}",
data: {
msg: msg,
client_id: client_id,
operator_id: operator_id,
},
beforeSend: function() {
},
success: function(data) {
var msg = `
<div class="operator-msg">
${data.operator_msg}
</div>
`;
console.log(data);
socket.emit("msgSent", {
'data': data,
});
$('#opt_msg').append(msg);
},
error: function(error) {
console.log(error);
}
});
$('#msg').val(" ");
return true;
} else {
return false;
}
}
</sc ript>
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
