WebSocket 教程说需要做两件事:
*1。应启动服务器端脚本:
php -q path/to/server.php
*2。客户端脚本应该打开套接字连接:
var socket = new WebSocket('ws://example.com:12345/server.php');
但是请求“ws://example.com/server.php”将再次运行服务器脚本。这将导致运行多个服务器实例。或者客户端请求会导致服务端错误(socket_bind(...) => already bound)。
有人可以解释一下这种沟通模式吗?谢谢。
最佳答案
Websockets 是持久连接(它们被设计为持久连接,尽管您仍然可以滥用关闭帧来始终重新建立连接...)。 (请记住,websocket 是有状态的,而不是无状态的 HTTP)
因此,当您通过 new WebSocket('ws://example.com:12345/server.php');
打开一个 websocket 连接时,您的网络服务器或套接字监听脚本将接受联系。 (网络服务器必须使用与您正在使用的代码相同的语言,对于 websockets,因为它们是持久连接,而不是无状态的 HTTP 式输入输出循环..)
然后它会读取您的握手请求并根据这些信息决定将请求路由到哪里。
因此,您的路由器通常应该根据指定的路径调用一些回调来委托(delegate)初始化。您通常不会使用 websockets 路由到真实文件。您更多地定义要路由到它们的处理程序的某些路径。
然后通常将您的客户端套接字映射到用户。 (例如向某个用户发送数据)
因此,对于您后续传入的数据,您只需将其与客户端状态信息一起传递给先前根据路由确定的回调。
不过,对于您的问题,相对来说很难猜出您的问题到底是什么。如果它不能回答您的问题,请在您的问题中更准确。 它是如何工作的有点太笼统了。
关于php - WebSocket 服务器端脚本调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23457616/