首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使用WebSocket建立安全连接?

如何使用WebSocket建立安全连接?
EN

Stack Overflow用户
提问于 2012-05-16 00:42:17
回答 3查看 16.3K关注 0票数 11

我找不到有关在PHP中建立wss连接的任何信息。我没有问题,连在一起,扔垃圾。顺便说一句,我正在使用这个非常好的库来完成这个工作:https://github.com/albeva/php-websocket

但是我的网站使用https,我需要一个WebSocket安全连接来避免火狐抱怨连接不安全的事实。

提前谢谢你的帮助。

编辑

下面是库用于启动套接字连接的代码:

代码语言:javascript
代码运行次数:0
运行
复制
$master = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if (!is_resource($master)) {
    $this->throwSocketError();
}

// set options
if (!socket_set_option($master, SOL_SOCKET, SO_REUSEADDR, 1)) {
    $this->throwSocketError();
}

// bind
if (!socket_bind($master, $this->host, $this->port)) {
    $this->throwSocketError();
}

// listen for connections
if (!socket_listen($master, SOMAXCONN)) {
    $this->throwSocketError();
}

我相信我需要修改这个代码,但我找不到方法。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-10-09 14:22:13

您目前在PHP上的最佳选择是使用棘轮。设置wss连接的最佳方法是将websocket服务器置于Nginx或HAProxy之后,这将为您处理所有SSL内容。这是用这里和HAProxy解释的。请注意,您可以对Nginx进行同样的操作,因为它现在也支持WebSocket。

票数 2
EN

Stack Overflow用户

发布于 2012-05-24 09:05:48

你试过服务器了吗?

代码语言:javascript
代码运行次数:0
运行
复制
<?php
$socket = stream_socket_server("ssl://0.0.0.0:".$port, $errno, $errstr);
if (!$socket) {
  echo "$errstr ($errno)<br />\n";
} else {
  while ($conn = stream_socket_accept($socket)) {
    fwrite($conn, 'some data...\n');
    fclose($conn);
  }
  fclose($socket);
}
?>
票数 4
EN

Stack Overflow用户

发布于 2012-05-18 20:07:08

下面是一个示例(和链接),它被稍加修改,并从另一个SO post中找到。链接到其他职位

下面是指向stream_context_create php函数定义的链接。功能定义

代码语言:javascript
代码运行次数:0
运行
复制
try 
{ 
    $localCertificateFilespec = $connection['localCertificateFilespec']; 
    $localCertificatePassphrase = $connection['localCertificatePassphrase']; 

    $sslOptions = array( 
        'ssl' => array( 
            'local_cert' => $localCertificateFilespec, 
            'passphrase' => $localCertificatePassphrase, 
            'allow_self_signed' => true, 
            'verify_peer' => false 
        ) 
    ); 
    $sslContext = stream_context_create($sslOptions); 

    $clientArguments = array( 
        'stream_context' => $sslContext, 
        'local_cert' => $localCertificateFilespec, 
        'passphrase' => $localCertificatePassphrase, 
        'trace' => true, 
        'exceptions' => true, 
        'encoding' => 'UTF-8', 
        'soap_version' => SOAP_1_1 
    ); 

    $oClient = new WSSoapClient($connection['wsdlFilespec'], $clientArguments); 
    $oClient->__setUsernameToken($connection['username'], $connection['password']); 

    return $oClient->__soapCall($operation, $request); 
} 

然而,在链接的最底部,所以帖子,你会找到一个答案从“山姆”。我需要在接下来的几周内做同样的事情,所以我计划使用Sams方法.因为我更喜欢PHP中的卷曲。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10610661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档