是否可以使用Nginx Node.js Socket.io SSL?

前端之家收集整理的这篇文章主要介绍了是否可以使用Nginx Node.js Socket.io SSL?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在尝试使用Nginx作为代理运行socket.io聊天应用程序.当我通过http端口连接到服务器时,它工作正常,但它不适用于https.我看到用户连接/断开事件通过,但没有发射到达客户端或服务器.

这是我的服务器.conf(Nginx / 1.4.6 Ubuntu)

@H_301_7@upstream websocket { server 127.0.0.1:8090; } server { listen 80; return 301 https://example.com$request_uri; } server { listen 443 ssl; ssl_certificate /home/andrew/example.com/Nginx/certs/example.com.cer; ssl_certificate_key /home/andrew/example.com/Nginx/certs/example.com.private.key; root /home/andrew/example.com/public; index index.html index.htm; server_name example.com; location /chat/ { rewrite ^/chat/?(.*)$/$1 break; proxy_pass http://websocket; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_http_version 1.1; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; } location / { try_files $uri $uri/ =404; } }

服务器(节点v0.12.1,Socket.io v1.3.5)

@H_301_7@var express = require('express'); var app = express(); var server = require('http').createServer( app ); var io = require("socket.io").listen( server ); server.listen(8090); console.log('listening on port 8090'); io.sockets.on( 'connection',function( socket ){ console.log( 'user connected' ); var msg = "user connected!!!"; socket.emit( 'message',msg ); socket.on('disconnect',function(){ console.log('user disconnected'); }); socket.on('message',function( msg ){ socket.emit( 'message',msg ); console.log('message: ' + msg); }); });

客户

@H_301_7@
最佳答案
好吧,事实证明这是socket.io的node.js代码中的命名空间的问题.更多信息:http://socket.io/docs/rooms-and-namespaces

这是服务器的一个工作示例

@H_301_7@var app = require( 'express' )(); var http = require( 'http' ).Server( app ); var io = require( 'socket.io' )( http ); var nsp = io.of('/chat'); // this is what needs to happen // and then we're listening to communication in the proper namespace nsp.on( 'connection',function( socket ){ console.log( 'user connected' ); socket.on('disconnect',function(msg){ nsp.emit( 'message',msg ); // this will broadcast message to everybody connected within the same namespace console.log('message: ' + msg); }); }); http.listen( 8090,function(){ console.log( "listening on :8090" ); });
原文链接:https://www.f2er.com/nginx/434329.html

猜你在找的Nginx相关文章