【发布时间】:2017-06-29 06:04:32
【问题描述】:
我在套接字服务器中使用 PHP。我创建套接字并写入套接字但无法读取。我已将所有客户端套接字附加到 clients 数组中。我使用标志 MSG_DONTWAIT 因为如果我使用其他标志,我无法与其他客户端握手。帮助我在这里找到错误或给我在这种情况下工作的代码。
foreach($clients as $client) {
if ( socket_recv($client, $buf, 1024, MSG_DONTWAIT) >= 1) {
print_r($buff);
} else {
echo "socket_recv() failed; reason: " .
socket_strerror(socket_last_error($socket)) . "\n";
}
}
但是,我在下面收到消息。请帮助我找出接收来自客户的消息。
PHP: socket_recv() failed; reason: Success
jQuery 代码:
$(document).ready(function() {
//create a new WebSocket object.
var wsUri = "ws://172.28.21.45:9000";
var websocket = false;
websocket = new WebSocket(wsUri);
$("#messageform").click( function(ev) {
ev.preventDefault();
var message = $("#message").val();
var packet = {
message: message
};
console.log(packet);
websocket.send(JSON.stringify(packet));
$("#message").val('');
});
websocket.onopen = function(ev) {
//ev.preventDefault();
$(".notification").html('<a href="messagearchive.php"><img src="images/bell.svg" width="25px;"/><br/><span style="color: green;">Connected</span> ');
}
websocket.onmessage = function(ev) {
ev.preventDefault();
}
websocket.onerror = function(ev) {
$(".notification").append('<p>Socket has error</p>');
}
websocket.onclose = function (ev) {
$(".notification").append('<p>Socket is closed</p>');
}
});
【问题讨论】: