Node.js教程之使用Node.js创建加入用户验证的websocket服务
沉沙 2018-11-16 来源 : 阅读 1426 评论 0

摘要:本篇教程介绍了Node.js教程之使用Node.js创建加入用户验证的websocket服务,希望阅读本篇文章以后大家有所收获,帮助大家对Node.js的理解更加深入。

本篇教程介绍了Node.js教程之使用Node.js创建加入用户验证的websocket服务,希望阅读本篇文章以后大家有所收获,帮助大家对Node.js的理解更加深入。

<

使用nodejs创建websocket服务是非常简单的(”ws”模块等),网上教程也很多。websocket服务默认没有连接验证,再加上它支持跨域连接,这样就存在“盗连”和并发攻击的风险。
nodejs的”ws”模块提供了一个verifyClient回调方法,可以在客户端连接时,获取到连接信息如url等。这样我们就可以在连接url中加入自己的验证信息(用户名、密码等)。直接上代码:
************************************************************
后端:MyWs.js
 
 
var util = require(‘util‘);
var url = require(‘url‘);
var server = require(‘ws‘).Server;
var wss = new server({ port: 8181, verifyClient: ClientVerify });
 
wss.on(‘connection‘, function (ws) {
    console.log(‘client connected‘);
 
    ws.on(‘message‘, function (message) {
        ws.send("message received!");
    });
 
    ws.on(‘close‘, function (close) {
        console.log("client closed");
    });
});
 
 
//验证函数
function ClientVerify(info) {
    var ret = false;//拒绝
    var params = url.parse(info.req.url, true).query;
 
    if (params["id"] == "luoc83" && params["key"] == "123456") {
        ret = true;//通过
    }
 
    return ret;  
}
 
************************************************************
前端:MyWs.htm
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "//www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="//www.w3.org/1999/xhtml">
<head>
    <script type="text/javascript" language="javascript">
        var ws;
              var user = "luoc83";
              var psw="12345";//现在是错误密码,正确的是“123456”
        function Connect() {
            ws = new WebSocket("ws://localhost:8181?id="+user+"&key="+psw);
            ws.onopen = function (e) {
                            alert("connect success");
            }
 
            ws.onclose = function () {
                alert("close");
            }
 
            ws.onerror = function (e) {
                alert("connect error!");
            };
 
            ws.onmessage = function (event) {
                alert(event.data);
            };
        }
 
 
    </script>
</head>
<body >
<button onclick="Connect()">测试</button>
</body>
</html>
 
************************************************************
测试步骤:
1)启动后端服务:node MyWs.js
2)在浏览器打开MyWs.htm,点击“测试按钮”,弹出提示: "connect error!" 和 “close”
按“F12”可以看到提示信息:
WebSocket connection to ‘ws://localhost:8181/?id=luoc831&key=123456‘ failed: HTTP Authentication failed; no valid credentials available
描述得很清楚:验证失败
3)修改MyWs.htm中 var psw="12345" 为 var psw="123456",保存,在浏览器打开,点击“测试按钮”,弹出提示"connect success",说明验证成功。    

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注WEB前端Node.js频道!

本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程