使用nodejs,此客户端代码不起作用:
var sock= require('websocket').w3cwebsocket;
var sock= new W3CWebSocket("wss://" + 'www.mysite.com'+ ':31333');
sock.onopen = function (evt)
{
console.log("it never reaches here");
//..................
}
实际上,当我的nodejs服务器不使用SSL时,它就可以正常工作,因此该代码可以正常工作:
var sock= new W3CWebSocket("ws://" + 'www.mysite.com'+ ':31333');
服务器代码如下:
var ws = require("./nodejs-websocket");
var fs = require('fs');
var options = {
secure: true,
key: fs.readFileSync('ssl/mysite.com.key'),
cert: fs.readFileSync('ssl/mysite.com.crt')
};
var server = ws.createServer(options, function (conn)
{
console.log("New connection")
conn.on("text", function (str)
{
//some code here
});
conn.on("close", function (code, reason)
{
console.log("Connection closed")
});
}).listen(31333);
通过浏览器,我可以使用Websockets与该服务器通信。但不是从Linux命令行。 如何从Linux命令行运行它?
答案 0 :(得分:0)
我不能对正在使用的图书馆说太多话。但是最近我也必须有安全的WebSockets。并改用这个库 socket.io-redis socket.io 它们特别允许您使用安全连接。下面是一个代码示例,说明了如何工作,上面的链接将指向文档。
var redis = require('redis');
var client = redis.createClient(config.redisPort,config.redis,
{auth_pass: config.reDISCACHEKEY, tls: {servername: config.redis}}); //creates a new client
var sclient=redis.createClient(config.redisPort,config.redis,
{auth_pass: config.reDISCACHEKEY, tls: {servername: config.redis}}); //creates a new client
var io = require('socket.io').listen(app);
var redis = require('socket.io-redis');
io.adapter(redis({pubClient:client,subClient:sclient}))
io.on('connection', function(socket){
client.set(socket.handshake.query.userName, socket.id);
//sets what happens when a socket disconnects
//deletes socket information
socket.on('disconnect', function(){
let name=socket.handshake.query.userName;
client.del(name, function(err, reply) {
});
});
socket.on('message', function(msg, func){
let name=socket.handshake.query.userName;
let sockectObj=msg;
io.emit('Message', sockectObj);
});
});
让我知道是否需要更多