我有 :
Apache(v2.4)在我的服务器的端口80上www.domain1.com,启用了mod_proxy和mod_proxy_wstunnel
node.js + socket.io 在同一服务器的端口3001上.
www.domain2.com由于此处描述的方法,访问(使用端口80)重定向到2 . 我在Apache配置中设置了这个:
<VirtualHost *:80>
ServerName www.domain2.com
ProxyPass / http://localhost:3001/
ProxyPassReverse / http://localhost:3001/
ProxyPass / ws://localhost:3001/
ProxyPassReverse / ws://localhost:3001/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
除了websocket部分之外,它适用于所有内容:ws://...不会像代理那样传输.
当我访问该页面时www.domain2.com,我有:
Impossible to connect ws://www.domain2.com/socket.io/?EIO=3&transport=websocket&sid=n30rqg9AEqZIk5c9AABN.
Run Code Online (Sandbox Code Playgroud)
问题:如何使Apache代理也成为WebSockets?
是否有任何教程或指南显示如何在PHP中编写一个简单的websockets服务器?我试过在谷歌上寻找它,但我找不到很多.我发现phpwebsockets但它现在已经过时,不支持最新的协议.我自己尝试更新它,但它似乎不起作用.
#!/php -q
<?php /* >php -q server.php */
error_reporting(E_ALL);
set_time_limit(0);
ob_implicit_flush();
$master = WebSocket("localhost",12345);
$sockets = array($master);
$users = array();
$debug = false;
while(true){
$changed = $sockets;
socket_select($changed,$write=NULL,$except=NULL,NULL);
foreach($changed as $socket){
if($socket==$master){
$client=socket_accept($master);
if($client<0){ console("socket_accept() failed"); continue; }
else{ connect($client); }
}
else{
$bytes = @socket_recv($socket,$buffer,2048,0);
if($bytes==0){ disconnect($socket); }
else{
$user = getuserbysocket($socket);
if(!$user->handshake){ dohandshake($user,$buffer); }
else{ process($user,$buffer); }
}
}
}
}
//---------------------------------------------------------------
function process($user,$msg){
$action = unwrap($msg);
say("< ".$action);
switch($action){
case "hello" : send($user->socket,"hello human"); break;
case …Run Code Online (Sandbox Code Playgroud) 我正在为iOS游戏编写服务器.游戏是基于回合的,并且服务器将信息推送到客户端的唯一时间是通知对手的移动.
我很好奇是否有人可以评论使用websockets和长轮询之间的性能和易于实现的差异.另外,如果我使用websockets,我应该只使用它来接收信息并发送其他所有的POST请求,还是应该通过websocket进行所有通信?
另外,如果我有兴趣创建一个Web客户端,那么在websockets和长轮询之间还有什么需要考虑的吗?
我想使用WebSockets为我的应用程序进行进程间通信(Daemon < - > WebGUI和Daemon < - > FatClient等).在测试期间,我尝试通过websocket.org(http://www.websocket.org/echo.html)上的JavaScript WebSocket客户端连接到我本地运行的Web套接字服务器(ws:// localhost:1234 ).
我现在的问题是:
为什么这可能?浏览器中是否没有实现跨源策略(此处:Linux上的FF29)?
我问,因为如果websocket.org是邪恶的,它可能会尝试与我的本地WS服务器通信,并将从localhost接收的每条消息重定向到任何其他服务器:
Local WebSocket Server Browser Evil Web Server
at ws://localhost:1234 at http://evil.tld
| | |
| |------[GET /]--------->|
| |<-----[HTML+EvilJS]----|
|<------[connect ws://..]----| |
|<----[some communication]-->| |
| |----[evil forward]---->|
| | |
我没有测试整个用例,但是从websocket.org提供的JS连接到ws:// localhost肯定有效.
使用JavaScript 流式传输实时视频的最快方法是什么?通过TCP的WebSockets是一个足够快的协议来流式传输30fps的视频吗?
我目前有一个用.Net编写的TCP服务器应用程序,它接收并向客户端提交消息.我正在寻找构建Web应用程序,因此需要通信层.
我已经构建了一个Node.JS + Socket.IO应用程序,它连接到我的TCP服务器,然后将通信推送到Web应用程序,一切正常.
我刚刚读到有关SignalR作为将其保留在.Net堆栈中的替代方法.
不过,我也发现,我可以写一个C#的WebSocket服务器,一个基本的演示在这里
我认为这个基本服务器就是SignalR,但显然有更多的功能吗?
我想要决定的是,我只是将我当前的TCP应用程序附加到Websocket服务器上,还是单独使用SignalR或Node.js路由?出于兴趣,SignalR应用程序如何运行,是作为Windows服务,控制台应用程序还是IIS服务?
我正在评估Pusher和PubNub,以便在我的主要Web客户端和我的服务器之间实现双向实时通信.两者看起来都令人印象深刻,Pusher的文档看起来更好,而PubNub的可扩展性和可靠性显然是他们的强项.
但是,由于我正在管理预算,我担心Pusher和PubNub的成本可能会成为我们的问题,因此我正在考虑使用其中一个开源替代品 - 我主要关注的是Socket.io,Faye和jWebSocket.
尽管我自己运行服务,但我有自己的顾虑:
感谢您的建议.
寻找Web套接字实现的Hello World Type示例:
这是来自php.net的Socket Create参考,但这看起来比Web Sockets更低.
我想在caniuse.com上使用这个Web套接字,现在可以在所有新的主流浏览器中实现.
谷歌搜索出现了这个Nets.TutsPlus网站,我可以在其中使用JavaScript示例代码...但我需要知道如何在PHP中实现服务器端,而不是像示例中那样在Java,Ruby或Node.js中实现.
PHP Socket Create是否相关?PHP本身是否支持Web套接字?我想在PHP实现的正确方向上的一点是有帮助的.
实际上这个教程有一个到phpwebsockets的断开链接......这是应该使用的库吗?
Websockets.org有一个测试应用程序,但没有提到PHP.
我正在编写一个JavaScript应用程序,它必须从其他用户那里接收大量数据.如果某些数据丢失并不重要.有没有办法使用带有UDP而不是TCP的JavaScript WebSockets?
我想得到websockets关闭的原因,所以我可以向用户显示正确的消息.
我有
sok.onerror=function (evt)
{//since there is an error, sockets will close so...
sok.onclose=function(e){
console.log("WebSocket Error: " , e);}
Run Code Online (Sandbox Code Playgroud)
代码总是1006,原因总是"".但我想分别说明不同的结果原因.
例如,命令行给出了一个错误原因:"你不能删除它,因为数据库不会让你".但在Chrome的控制台上,原因仍然是"".
还有其他方法可以区分不同的结果原因吗?