2
我正在開發一個web應用程序,並且包含websocket連接。我用websocket(https://www.npmjs.com/package/websocket)安裝了帶有node.js(5.0.0)的websocket服務器。Firefox無法建立websocket連接,而Chrome可以
在Chrome中它完美的作品,但在Firefox出現在控制檯此消息:
Firefox no puede establecer una conexión con el servidor en wss://www.my-dev-server.com:1337/.
(火狐無法建立與服務器的連接...)
這是服務器端的代碼(基本上如同示例):
var WebSocketServer = require('websocket').server;
var https = require('https');
var fs = require('fs');
var options = {
key: fs.readFileSync('/keyfile.key'),
cert: fs.readFileSync('/pemfile.pem')
};
var port = 1337;
// Create HTTPS service.
var server = https.createServer(options, function(request, response) {
console.log((new Date()) + ' Received request for ' + request.url);
response.writeHead(404);
response.end();
});
server.listen(port, function() {
console.log((new Date()) + ' Server is listening on port ' + port);
});
// create the server
wsServer = new WebSocketServer({
httpServer: server,
autoAcceptConnections: false
});
function originIsAllowed(origin) {
// TODO: complete
return true;
}
var clients = [];
// WebSocket server
wsServer.on('request', function(request) {
if(!originIsAllowed(request.origin)) {
request.reject();
console.log((new Date()) + ' Connection from origin ' + request.origin + 'rejected.');
return;
}
console.log((new Date()) + ' Connection accepted from ' + request.origin + '.');
var connection = request.accept(null, request.origin);
clients.push(connection);
connection.on('message', function(message) {
if (message.type === 'utf8') {
console.log('Received Message: ' + message.utf8Data);
}
else if(message.type === 'binary') {
}
});
connection.on('error', function(error) {
});
connection.on('close', function(reasonCode, description) {
console.log((new Date()) + " Peer " + connection.remoteAddress + " disconnected.");
});
});
我使用自簽名證書進行開發,與Web服務器使用的一樣。
這是我的客戶端代碼:
var connection = new WebSocket('wss://www.my-dev-server.com:1337');
connection.onopen = function() { };
connection.onerror = function (error) { };
connection.onmessage = function (message) {
/* some code here */
};
node.js中的任何編程方法 – mayank
我在我的uat階段,Chrome和其他瀏覽器工作正常,在Firefox中面臨這個問題 – mayank
不,它是關於瀏覽器配置。您必須使用可信證書或配置瀏覽器以允許您的websocket URL使用自簽名證書。 – francadaval