关于socket通信运行机制的问题(PHP): 20
初步了解下来,socket的通信要有个服务器端和客户端。我想问的是:1/这里的服务器端(一个PHP文件)指的是这个页面是在服务器端运行吗?还是说知识通过这个PHP文件与服...
初步了解下来,socket的通信要有个服务器端和客户端。我想问的是:
1/这里的服务器端(一个PHP文件)指的是这个页面是在服务器端运行吗?还是说知识通过这个PHP文件与服务器建立一个桥梁?
2/如果运行了一次服务器端的PHP页面,是不是只要不关闭使用关闭函数关闭这个页面就会永久的运行?还是说知识我我客户端每发送一次请求才会被激活?
3/关于端口的问题:是不是当服务器端的PHP页面在运行的时候端口就是被一直占用着的,在这种情况下再次运行服务器端的PHP页面是不是就会提醒端口被占用了(令我疑惑的是为什么是明明是运行一个文件,但是却提醒占用端口?)。 展开
1/这里的服务器端(一个PHP文件)指的是这个页面是在服务器端运行吗?还是说知识通过这个PHP文件与服务器建立一个桥梁?
2/如果运行了一次服务器端的PHP页面,是不是只要不关闭使用关闭函数关闭这个页面就会永久的运行?还是说知识我我客户端每发送一次请求才会被激活?
3/关于端口的问题:是不是当服务器端的PHP页面在运行的时候端口就是被一直占用着的,在这种情况下再次运行服务器端的PHP页面是不是就会提醒端口被占用了(令我疑惑的是为什么是明明是运行一个文件,但是却提醒占用端口?)。 展开
1个回答
展开全部
php socket 是以php cli 模式运行的 也就是在服务器上用命令行执行php xxx.php
而你要保持这个文件的长连接 。就是持久监控。
保持长连接也就是死循环
while(true){
这里写socket的一些方法
}
这样他就是会一直执行。设置超时时间为0
这就socket的基本而原理 也是消息队列的基本原理
而你要保持这个文件的长连接 。就是持久监控。
保持长连接也就是死循环
while(true){
这里写socket的一些方法
}
这样他就是会一直执行。设置超时时间为0
这就socket的基本而原理 也是消息队列的基本原理
更多追问追答
追问
我现在写的是想要两个网页之间实现通信,也就是当输入后传到彼此显示的模块中(用AJAX实现,每点击一次发送按钮就传输一次数据,内容的显示区域使用setIntervla()实现无限刷新读取消息)。:如果我按照我的方法执行,那么每次点击按钮必定会执行一次socket的服务端文件。
追答
不是这样的 h5 websocket 里面已经把函数给你封装好了 你只需要实现逻辑就好
var socket = new WebSocket('ws://localhost:8888');
// 打开Socket
socket.onopen = function(event) {
};
// 发送消息
socket.send('内容');
// 监听消息
socket.onmessage = function(event) {
console.log(event);
};
// 监听Socket的关闭
socket.onclose = function(event) {
console.log(event);
};
// 关闭Socket....
//socket.close()
这些事websocket的一些方法
//socket.send('这里是要发送的数据');
你只需要在需要的时候在代码里面实现功能即可
比如说 你要点击按钮发送 和聊天功能一样
那么只需要 引入jquery文件
$('button').click(function(){
//这里判断下socket的状态readyState
socket.send('这里是要发送的数据');
//剩下的逻辑自己去写
})
而在别人发送数据,你接收到的时候 会自动触发onmessage 函数的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询