1

我有:

  1. PHP 套接字服务器

  2. 用于处理与服务器和数据库通信的 PHP 页面

  3. 客户端 .php 页面,它使用 javascript/canvas 来显示游戏并与之交互。

我想要的是用户使用 PHP 页面进行连接和身份验证,这将启动与服务器的套接字连接。根据来自该套接字的信息,可能会触发一些聊天信息和事件以将数据加载到客户端 php 页面中。

处理这个问题的正确方法是什么。在我之前使用 ajax 的所有情况下,用户触发事件,而不是服务器和 javascript 等待 php 页面的响应。

来自 php 套接字的哪段 php 代码可以让我向画布元素发送消息?

这是一个示例,因为上面可能不是很有启发性:

IE:PHP 读取其套接字连接{"name":"msg","from":"user1","time":12345,"msg","hello world"}

此时 PHP 做了什么?** 所以...

客户有一个 div"id='Incoming'"

我想启动以下 javascript:

function handleMessage(msgObj) {
  var cText = document.getElementById("Incoming").innerHTML;
  cText += "(" + msgObj.time + ")" + msgObj.from + " says: " + msgObj.msg +"<br/>";
  document.getElementById("Incoming").innerHTML = cText;
}

我想我想弄清楚客户端的网页应该如何与 php 套接字对话......

这可能吗,还是我需要在 Flash、Java 等中创建客户端?

4

2 回答 2

1

当您有数据要发送时(例如,用户提交一个按钮),您通常通过事件处理程序将内容从客户端发送到服务器。当 websocket 从服务器(socket.onmessage)接收数据时,它也会触发事件。简单的。

ws.onmessage=function (evt) { handleMessage(evt.data); };

(或者只是更改您的 handleMessage 函数体以使用 msgObj.data 作为文本值)

来自 php 套接字的哪段 php 代码可以让我向画布元素发送消息?

您使用的是什么 websocket 实现?它们都有不同的 API(注意 websocket 与网络套接字不同)

于 2012-06-13T15:24:26.873 回答
0

你应该使用彗星:
http ://en.wikipedia.org/wiki/Comet_(programming )

AJAX 更好,而且是异步的

http://www.ape-project.org/
http://www.stream-hub.com/
...

http://cometdaily.com/maturity.html

或使用 HTML5 WebSockets

于 2012-06-13T14:49:54.363 回答