发布网友 发布时间:2022-04-07 09:26
共2个回答
懂视网 时间:2022-04-07 13:47
Workerman如何创建一个wss服务,使得客户端可以用过wss协来连接通讯,比如在微信小程序中连接服务端。
答:
wss协议实际是websocket+SSL,就是在websocket协议上加入SSL层,类似https(http+SSL)。
所以只需要在websocket协议的基础上开启SSL即可支持wss协议。 (推荐学习: workerman教程)
直接用Workerman开启SSL
准备工作:
1、Workerman版本不小于3.3.7
2、PHP安装了openssl扩展
3、已经申请了证书(pem/crt文件及key文件)放在磁盘任意目录
代码:
<?php require_once __DIR__ . '/Workerman/Autoloader.php'; use WorkermanWorker; // 证书最好是申请的证书 $context = array( // 更多ssl选项请参考手册 http://php.com/manual/zh/context.ssl.php 'ssl' => array( // 请使用绝对路径 'local_cert' => '磁盘路径/server.pem', // 也可以是crt文件 'local_pk' => '磁盘路径/server.key', 'verify_peer' => false, // 'allow_self_signed' => true, //如果是自签名证书需要开启此选项 ) ); // 这里设置的是websocket协议(端口任意,但是需要保证没被其它程序占用) $worker = new Worker('websocket://0.0.0.0:443', $context); // 设置transport开启ssl,websocket+ssl即wss $worker->transport = 'ssl'; $worker->onMessage = function($con, $msg) { $con->send('ok'); }; Worker::runAll();
通过以上的代码,Workerman就监听了wss协议,客户端就可以通过wss协议来连接workerman实现安全即时通讯了。
测试
打开chrome浏览器,按F12打开调试控制台,在Console一栏输入(或者把下面代码放入到html页面用js运行)
// 证书是会检查域名的,请使用域名连接 ws = new WebSocket("wss://域名"); ws.onopen = function() { alert("连接成功"); ws.send('tom'); alert("给服务端发送一个字符串:tom"); }; ws.onmessage = function(e) { alert("收到服务端的消息:" + e.data); };
注意:
1、如果无法启动,则一般是443端口被占用,请改成其它端口,注意改成其它端口后客户端连接时需要带上端口号,客户端连接时地址类似wss://domain.com:xxx ,xxx为端口号。如果必须使用443端口请使用方法二代理的方式实现wss。
2、wss端口只能通过wss协议访问,ws无法访问wss端口。
3、证书一般是与域名绑定的,所以测试的时候客户端请使用域名连接,不要使用ip去连。
4、如果出现无法访问的情况,请检查服务器防火墙。
5、此方法要求PHP版本>=5.6,因为微信小程序要求tls1.2,而PHP5.6以下版本不支持tls1.2。
热心网友 时间:2022-04-07 10:55
这样很多事情都可以更容易理解。WSS 3.0的所有内容,页面文件、网站配置、用户设置、网站里面的所有内容,都不是以文件的形式保存的,而是保存在后台的SQL数据库里面的。因此,在IIS的目录下,你看不到SharePoint 作为一个网站应该有的所有 htm文件,用户上传的文档等内容。默认情况下,安装WSS 3.0 会生成/创建以下几个数据库:SharePoint_AdminContent_GUID该内容数据库用于存储所有Windows SharePoint Services 3.0 内容。可使用 SharePoint 管理中心网站添加新的数据库。SharePoint_Config该配置数据库包含所使用的大部分数据库,其中包括所有 Internet Information Services (IIS) 网站、Web 应用程序、Web 部件包和网站模板。WSS_Search_计算机名称该数据库用于搜索服务,它包含用于搜索的必需内容。通过使用此数据库,Windows SharePoint 搜索服务允许用户搜索服务器上的所有网站内容。WSS_Content该数据库用于包含特定于 Web 应用程序及其网站集的数据。它包含内容数据,如上载到列表或库的文档。默认情况下会为每个 Web 应用程序创建一个内容数据库。添加到 Web 应用程序中的所有新网站集均使用同一数据库。默认情况下,这些数据库保存在以下路径:C:\Windows\SYSMSI\SSEE\MSSQL.2005\MSSQL\Data遭遇问题:很多情况下,用户会很充分利用 SharePoint 的文档库功能。把 SharePoint 当成一个文件服务器来使用。确实, SharePoint的文档管理功能做得非常棒!全文搜索、权限管理(与windows账号结合!)、版本控制、web界面上传下载,这些功能应有尽有,很难让人不心动。但很不幸,正如前面所说的,WSS 3.0的所有内容,都是保存在后台的SQL数据库里面的,用户上传的各类文档(MP3、电影、RAR文件)也是保存在SQL数据库里面。这就带来很严重的问题:SQL Server 在处理大量/大型二进制数据文件的时候,存在较严重效率问题,并占用较高的磁盘容量。举例来说:用户上传一些RAR/ZIP文件到 SharePoint网站,每个文件都比较大,达到600M左右。在上传下载过程中,处理速度将很慢,服务器资源占用很高;更重要的是后台数据库占用大量磁盘空间!(很多是日志文件占用)。C:\Windows\SYSMSI\SSEE\MSSQL.2005\MSSQL\Data第一步,下载安装Microsoft SQL Server Management Studio Express,通过\\.\pipe\mssql$microsoft##ssee\sql\query连接名,连接进入SharePoint后台的SQL数据库。第二步,查看是哪个数据库文件占用大量空间。(如果你的服务器有多个网站的话,你需要一个个找一下。)第三步,完整备份该数据库到其他目录。第四步,收缩该数据库,或者收缩数据库文件。(如果是日志文件过大,则收缩数据库文件,选择日志文件收缩即可。)