首页 > 解决方案 > 如何使用 websocket io 只交互两个屏幕

问题描述

我是 websocket IO 的新手。

我在节点 js 和 laravel 中使用 Websocket IO。我使用 websocket 实现了即时聊天。使用此 URL 的人都可以使用此 URL 并立即聊天。

但我只需要两个用户聊天偏好。

请提出您的想法。

标签: phplaravelwebsocket

解决方案


最好在 url 参数中发送用户 ID 或房间 ID。房间 ID 意味着,例如,在您的情况下,有两个用户。

在房间表格式

id .  room_id .   user_id
1     200         user_1
2     200         user_2

在你的 laravel 路由文件 web.php

Route::get('chat/{room_id}','HomeController@chat');
Route::get('chat/200','HomeController@chat');

在您的视图文件中

<script src="{{ url("assets/scripts/sjquery-3.2.1.min.js") }}"></script>
<script src="{{ url("assets/scripts/socket.io.js") }}"></script>
<script type="text/javascript">
    //current url room_id
    var room_id="{{ $room_id }}";
    var socket=io.connect(LISTEN_URL);
    jQuery(document).ready(function($){
        $("#submit-chat").click(function(){
            if($("#text-chat").val()!="")
            {
                //you will pass current room id in socket emit
                var data={room_id:room_id,name:$("#text-name").val(),message:$("#text-chat").val()}
                socket.emit('sendChatToServer', data);
                $("#text-chat").val("");
            }
            else
            {
                alert('Please enter text to chat');
            }
            return false;
        })
        socket.on('sendChatToClient', function(message) {
            //every time and every page and every users this socket listens, but message only enters if your current room_id and receiving data room id same
            if(room_id==message.room_id)
            {
                 $(".chat-content ul").append('<li><strong>'+message.name+'</strong> - '+message.message+'</li>');
            }
        });
    })
</script>

推荐阅读