相关疑难解决方法(0)

php棘轮websocket SSL连接?

我有一个棘轮聊天服务器文件

use Ratchet\Server\IoServer;
use Ratchet\WebSocket\WsServer;
use MyAppChat\Chat;
require dirname(__DIR__) . '/vendor/autoload.php';
$server = IoServer::factory(
    new WsServer(
        new Chat()
    )
  , 26666
);
$server->run();
Run Code Online (Sandbox Code Playgroud)

我使用Websocket连接,ws它工作正常

if ("WebSocket" in window) {
    var ws = new WebSocket("ws://ratchet.mydomain.org:8888");
    ws.onopen = function() {
        // Web Socket is connected. You can send data by send() method.
        ws.send("message to send");
    };
    ws.onmessage = function (evt) { 
        var received_msg = evt.data;
    };
    ws.onclose = function() { 
        // websocket is closed. 
    };
} else {
  // the …
Run Code Online (Sandbox Code Playgroud)

php ssl websocket ratchet

37
推荐指数
5
解决办法
3万
查看次数

WebSocket连接失败:WebSocket打开握手被取消

我最近设置了一个EC2实例(在没有负载均衡器的VPC中),不可否认配置有点奇怪,但它是我们运行的Web应用程序所需要的.

Web服务器(在Haskell中)在端口4433上运行(标准端口是为Apache实例保留的),并且正在接收从另一个系统广播的UDP数据包.我有很多端口是开放的(仅在测试期间),如此处所示(来自安全组):

Custom TCP Rule    4433     tcp 0.0.0.0/0   ?
Custom TCP Rule    8080     tcp 0.0.0.0/0   ?
SSH                22       tcp 0.0.0.0/0   ?
HTTP               80       tcp 0.0.0.0/0   ?
HTTPS              443      tcp 0.0.0.0/0   ?
Custom UDP Rule    30090    udp 0.0.0.0/0   ?
Custom UDP Rule    30089    udp 0.0.0.0/0   ?
Run Code Online (Sandbox Code Playgroud)

TCP套接字的JavaScript请求在同一端口上设置套接字(使用分配给AWS公共IP的URL),这是请求返回错误的位置:

与'wss:// [URL]:4433/projects/socket'的WebSocket连接失败:WebSocket打开握手被取消.

将套接字绑定到0.0.0.0会导致相同的错误.

为了启动Haskell Web服务器,我必须引用AWS提供的内部 IP,因为它在引用弹性IP服务提供的公共 IP 时不会运行.想到这就是问题出现的地方我把套接字请求改成了这个......

wss://[internal ip]:4433/projects/socket
Run Code Online (Sandbox Code Playgroud)

这会改变错误:

与'wss:// [内部IP]:4433/projects/socket'的WebSocket连接失败:连接建立错误:net :: ERR_CONNECTION_REFUSED

这个错误对我来说很有意义,因为外部世界无法获得内部IP.

我在AWS上的websockets上阅读的所有内容都涉及ELB(Elastic Load Balancer),而我不需要其中的一个.我已经尝试了所有当前发布的答案中的所有内容(有些问题甚至没有得到答案),但无济于事.我还设置了亚马逊(近24小时前)的支持案例,该案例尚未收到回复.

附加信息

导航到http://[URL]:4433/projects/socket'WebSocket Available',其中URL是我们希望使用的URL以及AWS提供的公共DNS.

运行netstat -plunt显示以下内容:

tcp        0      0 0.0.0.0:22 …
Run Code Online (Sandbox Code Playgroud)

javascript amazon-ec2 amazon-web-services websocket

16
推荐指数
1
解决办法
4万
查看次数

无法使用ssl和apache连接到websocket

我打算使用socket.io将客户端连接到服务器套接字。当我使用http时,一切正常,但是当我尝试使用https时,客户端无法连接。

我尝试使用http require('https')和证书创建服务器,但是没有用。

现在,经过一些代码更改和测试之后,这就是我的代码:

服务器index.js

var https = require('https');
var app = express();
var options = {
   key: fs.readFileSync('./server-key.pem'), 
   cert: fs.readFileSync('./server-crt.pem'), 
   ca: fs.readFileSync('./ca-crt.pem'), 
   requestCert: false,
   rejectUnauthorized: false
};


var server = https.createServer(options, app);¡
var io = require('socket.io')(server);

server.listen(3003, function() {
        console.log('server up and running at %s port', 3003);
});


io.on('connection', function(client){
        console.log("NUEVO CLIENTE");
        client.on('event', function(data){});
        client.on('disconnect', function(){});
        client.on('setRoom', function(room) {
                        client.room = room;
                        client.join(room);
        });
        client.on('leaveRroom', function(room) {
                        client.leave(room);
    });

});

Run Code Online (Sandbox Code Playgroud)

使用端口3003,服务器连接始终成功。

客户

$scope.socket = io.connect('https://socket.softgym.com/', { transports: ['websocket'],rejectUnauthorized: false}); …
Run Code Online (Sandbox Code Playgroud)

apache amazon-web-services node.js socket.io angular

5
推荐指数
1
解决办法
261
查看次数