दिलचस्प पोस्ट
उद्देश्य सी में XML पार्सिंग का उपयोग करके विशेष चरित्र और थाई भाषा के साथ स्ट्रिंग कैसे पोस्ट करें एक पेड़ बनाने के लिए स्वयं में घटक का प्रयोग करें समवर्ती संशोधन अपवाद ओरेकल एसक्यूएल डेवलपर में कस्टम दिनांक समय प्रारूप कैसे सेट कर सकता हूं? बाकी बनाम JSON-RPC? PHP: यादृच्छिक, अद्वितीय, अल्फ़ान्यूमेरिक स्ट्रिंग कैसे उत्पन्न करें? SSH पर फ़ाइलों को स्थानांतरित करना आरएसएस फ़ीड पढ़ने के लिए सरल एक्सएमएल का उपयोग करना एचटीटीपी पीएचपी और अपाचे का उपयोग करते हुए हेडर को समाप्त करता है लैंडस्केप अभिविन्यास में UIImagePickerController का उपयोग करना क्या SSL प्रमाणपत्र सर्वर आईपी पते के लिए बाध्य हैं? ग्रेड – गैर-शून्य निकास मूल्य क्या है और मैं इसे कैसे ठीक कर सकता हूं? डेल्फी भाषा सुविधाओं और संस्करण की सूची जिसमें वे शामिल / बहिष्कृत किए गए थे छवि मैजिक स्थापना सत्यापित करें सी # में नामकरण सम्मेलनों क्या हैं?

एनजीएनएक्स के रूप में वेबसर्वर के रूप में socket.io और node.js / ws: // 400 बुरा अनुरोध

मुझे इस त्रुटि अनुरोध मिल गया है

फायरबग से त्रुटियां

जर्मन में अंतिम वाक्य का अर्थ है "फ़ायरफ़ॉक्स कैंट सर्वर से कनेक्ट हो सकता है जो ws: // ……. में स्थित है"।

सर्वर मुझे लगता है कि समस्या नहीं होगी।

क्योंकि यहाँ nginx विन्यास है, क्योंकि मुझे लगता है कि समस्या है!

server { server_name example.org; listen 80 default_server; root /var/www/web; location / # for symfony2 { try_files $uri @rewriteapp; } location @rewriteapp # for symfony2 { rewrite ^(.*)$ /app.php/$1 last; } location ~ ^/app\.php(/|$) { fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_split_path_info ^(.+\.php)(/.*)$; include fastcgi_params; fastcgi_param HTTPS off; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } location ~ ^/socket { proxy_pass http://127.0.0.1:8080; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $http_host; } access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; } 

nginx संस्करण: nginx / 1.4.7

app.js (सर्वर है!)

 var express = require('express'), io = require('socket.io').listen(server), server = require('http').createServer(app), bodyParser = require('body-parser'); var app = express(); server.listen(8080); app.use(bodyParser.json()); app.post('/', function(request, response) { response.send('OK'); io.emit('MessageForAll', request.body); }); io.on('connection', function (socket){}); console.log('Server running on port 8080.'); 

वेब के समाधान से एकत्रित समाधान "एनजीएनएक्स के रूप में वेबसर्वर के रूप में socket.io और node.js / ws: // 400 बुरा अनुरोध"

  1. Nginx (nginx संस्करणः nginx / 1.4.6) बदलें: –

     server { listen 80; server_name 255717070.com; root /var/www/stack/25571070; index index.html index.htm; location / { } location ^~ /socket { rewrite ^/socket/(.*) /$1 break; #used to send request to base url proxy_pass http://127.0.0.1:3000; proxy_redirect off; proxy_pass_request_headers on; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; } } 

नोट: आपको location ~ ^/socket को location ^~ /socket बदलने की जरूरत है

नोड परिवर्तन:

  1. app.js:

     app.enable('trust proxy'); app.set('port', process.env.PORT || 3000); var server = app.listen(app.get('port'), function() { debug('Express server listening on port ' + server.address().port); }); var sockets = require('socket.io')({ 'transports': ['websocket', 'flashsocket','htmlfile','xhr-polling','jsonp-polling'] }); var io = sockets.listen(server,{ resource: '/socket.io/','sync disconnect on unload':true }); io.sockets.on('connection', function (socket) { setInterval(function() {socket.emit('news', { hello: 'hello world' })}, 1000); }); 
  2. index.ejs:

     <!DOCTYPE html> <html> <head> <title><%= title %></title> <link rel='stylesheet' href='/socket/stylesheets/style.css' /> </head> <body> <h1><%= title %></h1> <p>Welcome to <%= title %></p> <div id="divID"> </div> <script src="http://www.25571070.com/socket/socket.io/socket.io.js"></script> <script> var socket = io.connect('ws://25571070.com'); //var socket = io.connect('http://www.25571070.com'); var i = 0; socket.on('news', function(data) { var div = document.getElementById('divID'); i = i + 1; div.innerHTML = div.innerHTML + '<p>'+ data.hello+'('+i+')'+'</p>'; console.log(data); }); </script> </body> </html> 

package.json:

 { "name": "25571070", "version": "0.0.0", "private": true, "scripts": { "start": "node ./bin/www" }, "dependencies": { "body-parser": "~1.6.6", "cookie-parser": "~1.3.2", "debug": "~1.0.4", "ejs": "~0.8.5", "express": "~4.8.6", "moment": "^2.8.2", "morgan": "^1.2.3", "serve-favicon": "^2.0.1", "socket.io": "^1.0.6", "stylus": "0.42.3" } } 

फ़ायरफ़ॉक्स प्रतिक्रिया:

फ़ायरफ़ॉक्स websocket प्रतिक्रिया

क्रोम रिस्पांस:

Chrome Websocket प्रतिक्रिया

FYI करें। मैंने नीचे संस्करण का इस्तेमाल किया है:

  • "नोड": "v0.10.31"
  • "ईजेएस": "~ 0.8.5"
  • "एक्सप्रेस": "~ 4.8.6",
  • "socket.io": "^ 1.0.6"
  • "nginx": "1.4.6"

त्वरित शुरुआत के लिए node.js के साथ node.js -socket.io-express-ngnix-starter पर जाएं

क्या मैं सर्वर कोड देख सकता हूं?

क्या आपने दोबारा जांच की है कि वेबकॉट बंदरगाह किसी भी फ़ायरवॉल द्वारा अवरुद्ध नहीं है?

मुझे लगता है कि आप पहले से ही इस ब्लॉग पोस्ट को पढ़ चुके हैं, है ना?