我正在建立一个PHP客户端(我已经有一个C#客户端)作为概念证明。 PHP客户端将使用SOAP连接相同的.NET服务器。例如,我正在使用游戏二十一点。
现在首先C#客户端工作正常,但PHP中存在问题。经过大量调试后,我发现PHP总是为每个远程服务器调用使用新连接。这使得无法对游戏进行编程。
例如,我有一个PHP文件,只是像这样设置客户端(client.php):
try {
$client = @new soapClient("http://localhost:8000/BlackJack/Service?wsdl",
array(
"trace" => 1,
"exceptions" => 0,
"cache_wsdl" => 0)
);
} catch (Exception $e) {
print 'Caught exception: ' . $e->getMessage() . "\n";
}
然后在我的主文件中(不能使用jQuery和ajax调用来动态加载它,但现在我只是测试)我有以下代码(blackJackClient.php):
require_once("client.php");
$ini = ini_set("soap.wsdl_cache_enabled","0");
$BetAmountPost = 100;
print_r($result = $client->buttonDeal_Click(array("BetAmount" => (string)$BetAmountPost))->buttonDeal_ClickResult);
print_r($result = $client->PlayerMoney()->PlayerMoneyResult);
第一个电话将开始一个新游戏(交易),玩家的下注金额(例如100)将从总金额中减去(1000)。那么我得到的结果是钱= 900。
下面的突击队员会问我目前有多少钱,一个人希望得到900,但是没有,我有1000(我的起始金额)。
所以我的问题是如何才能使所有的呼叫都在一个会话中进行,所以我们仍然使用相同的连接?
谢谢!
答案 0 :(得分:1)
由于SOAP使用HTTP协议,并且HTTP是无状态的,因此无法在游戏会话期间保持连接处于打开状态。 相反,您应该将每次请求的用户身份验证发送到服务器。