如何使用websocket io仅互动两个屏幕

时间:2018-07-12 05:49:30

标签: php laravel websocket

我是websocket IO的新手。

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

但是我只需要两个用户聊天首选项。

请提出您的想法。

2 个答案:

答案 0 :(得分:0)

我了解您要为两个用户实施实时聊天。这可以通过任何websocket框架轻松完成。 Ably是实时聊天的不错选择。

这里是demo。 有关使用Ably创建聊天应用程序的详细演练,请参考this link

答案 1 :(得分:0)

最好以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>