我正在使用 websockets 在 php 中设计一个聊天程序。在客户端,我想在两个不同的输出字段中显示聊天和在线用户。由于聊天消息和在线用户是使用相同的 socket_send() 方法从服务器发送的,那么当我在客户端收到套接字的数据时,如何在客户端区分服务器是否发送了在线用户或聊天消息,以便我可以在两个不同的输出字段中显示它们。
希望你能明白我想说什么。我在客户端使用javascript。
我正在使用 websockets 在 php 中设计一个聊天程序。在客户端,我想在两个不同的输出字段中显示聊天和在线用户。由于聊天消息和在线用户是使用相同的 socket_send() 方法从服务器发送的,那么当我在客户端收到套接字的数据时,如何在客户端区分服务器是否发送了在线用户或聊天消息,以便我可以在两个不同的输出字段中显示它们。
希望你能明白我想说什么。我在客户端使用javascript。
在您的情况下,WebSocket 连接类似于现实世界中的空气。WebSocket 消息对应于声音。当人们发出声音时,这些声音会通过空气传播到其他人的耳朵。
但是,为了让我们理解其他人的声音是什么意思,我们开发了一种可以称为通信协议的东西。我们开发了单词并给了它们发音。因此,发声者能够将他们的想法转化为声音。接收者能够将这些声音转换回意义。
到目前为止,您的客户端和服务器之间有空气,即 WebSocket。你可以发出声音(发送消息)。但到目前为止,两者都缺少一个通信协议,一个共同的理解。你必须提供那个。没办法。你会意识到这可能成为一项相当复杂的任务。
尽管如此,在含义、声音(在您的情况下为“消息”)和反之亦然之间扮演上帝并设计转换规则是很有趣的。
所以,继续,发明一个协议。这是其他人说的。您应该想出某些对象类型,例如User
and Message
,您将为消息分配属性,例如sender
and recipient
。然后,您很可能会以某种形式对这些对象进行编码,将它们放入消息中并在客户端和服务器之间发送这些消息。
客户端和服务器都需要了解您的基本对象类型,并且需要知道对象在这些消息中是如何编码的。