一 前言

之前写过一些asyncua的文章,是基于python的,实际使用中感觉不太好用,关键的是有时候想运行在嵌入式平台上,而python的移植很麻烦…除非是像树莓派系统这种发行版,可以直接联网下载。

而node-opcua是基于nodejs的,nodejs官网提供了嵌入式的版本,如下红框,这样就省去了移植的麻烦,

node-opcua的github地址是https://github.com/node-opcua/node-opcua,其简介如下,

node-opcua is an implementation of an OPC UA stack fully written in Typescript for NodeJS.

实际使用时可以使用JavaScript或者TypeScript,这2种语言用起来都比C/C++方便很多,只是运行效率会比较低,可以用于原型验证。

本文讲述如何使用node-opcua来建立一个简单的OPCUA Server,并使用UaExpert进行连接。


二 建立Server

1. 初始化

首先需要安装nodejs,要求版本至少是12,去官网下载然后安装就行了,遇到问题可以网上搜下,不再赘述。

安装完后输入node -v来查看版本,本人安装版本是17.3.0,运行于Win10

接着新建目录server_test,也可根据需要命名,然后cd进入这个目录,最后执行下面的命令进行初始化,

$ npm init                      # create a package.json
$ npm install node-opcua --save # add the node-opcua

输入第一个命令后,会有很多命令行提示,直接一路回车就行了,也可以根据需要自行修改;第二个命令用于下载node-opcua。

server_test目录就是一个工程目录。打开目录下的package.json可以看到下载的node-opcua的版本,

下载时也可以指定node-opcua的版本,如下这种,

$ npm install node-opcua@2.62.0 --save # add the node-opcua

2. Server代码及运行

文件名为sample_server.js,内容如下,

/*global require,setInterval,console */
const { OPCUAServer, Variant, DataType, StatusCodes, makeNodeId} = require("node-opcua");async function main() {// Let's create an instance of OPCUAServerconst server = new OPCUAServer({port: 4334, // the port of the listening socket of the serverresourcePath: "/UA/MyLittleServer", // this path will be added to the endpoint resource name});await server.initialize();console.log("initialized");server.start(function() {console.log("Server is now listening ... (press CTRL+C to stop)");console.log("port ", server.endpoints[0].port);});
}main();

代码比较简单,做了如下事情,

  1. 从node-opcua里引入需要的模块
  2. 创建OPCUAServer实例,指定port为4334,endpoint的URL是opc.tcp://:4334/UA/MyLittleServer
  3. 初始化server
  4. 运行server,运行成功后会执行一个回调函数

在终端下,输入下面的命令执行sample_server.js,

$ node sample_server.js

如下,

PS:第一次运行时会下载openssl,因为server提供的endpoint中有加密的,可能会有点慢,等等就行…

运行成功,最后使用UaExpert来连接这个server。打开UaExpert,然后点击工具栏的“+”来进行连接,弹出界面如下,

在红框里双击蓝色选项,输入以下内容,这是server endpoint的URL,

点击OK,然后展开这个URL,会看到如下的endpoint,总共9个,

这里选择Basic256Sha256 - Sign & Encrypt进行连接,第一次连接时会弹出一个框,表示Server证书不被信任,可以点击信任,然后点击Continue就行了,连接成功后效果如下,

一切运行OK


三 总结

本文讲述如何使用node-opcua来建立一个简单server,可以看出非常好用,而且直接提供加密的endpoint,很不错。

node-opcua的使用 --- [1] 简单server相关推荐

  1. node aws 内存溢出_如何使用Node和AWS S3设置简单的图像上传

    node aws 内存溢出 by Filip Jerga 由Filip Jerga 如何使用Node和AWS S3设置简单的图像上传 (How to set up simple image uploa ...

  2. Node.js 从零开发web server博客项目--项目初始化

    本篇博客记录了<Node.js 从零开发web server博客项目>的原生开发系列内容. 开篇主要介绍原生项目的搭建,以及初步的项目结构设计. 一.项目初始化 新建项目目录,并进入到项目 ...

  3. js ftpclient linux server,Node.JS用Socket实现FTP Server服务器和Client客户端

    通信过程 FTP协议其实就是主机和服务通过Socket进行固定格式的通信过程,当某客户端连接到FTP 服务器后,客户端发送指令: [参数] 服务会按以下格式返回: [参数或说明] 例如以下是FileZ ...

  4. node php聊天室,最简单的Nodejs聊天室示例

    今天群里一个同学找我要一个nodejs聊天室的demo.给他了一个简单的例子,顺便记录下: 准备工作(前提是已经装好了nodejs):mkdir nodejs-demo cd nodejs-demo安 ...

  5. Node.js从零开发Web Server博客项目笔记

    代码运行流程 首先开启服务器,在npm run dev的时候运行了bin目录下的www.js文件,启动http服务 当前端进行访问的时候,经过app.js文件 App.js是整个项目的入口文件,首先判 ...

  6. node.js 编写的一个简单的 HTTP 服务器

    Node.js是一套用来编写高性能网络服务器的JavaScript工具包,一系列的变化由此开始.比较独特的是,Node.js会假设你是在POSIX环境下运行它Linux 或 Mac OS X. [代码 ...

  7. 用 java 安装 mockserver_前端工程化-Mock Server:使用Node+json-server+mock.js搭建Mock Server...

    目的 为了便于前后端分离开发,前端在本地启动mock服务进行开发,后续对接联调时只需将接口地址改成真实地址即可. 一个优秀的mock server应具备以下功能: 随机数据生成,避免手动创建数据: 真 ...

  8. Node.js基础汇总(一):什么是Node.js,创建最简单的Node.js应用,NPM介绍,安装express模块

    目录 1. 什么是Node.js? 1.1 JavaScript是什么? 1.2 Node.js 是什么? 1.3 Node.js的原理 2. 创建最简单的Node.js应用 2.1 代码示例 2.2 ...

  9. Node中require方法的简单实现

    B文件 module.exports = '测试测试'; 复制代码 A文件 let fs = require('fs');/** moduleName 模块名称*/ function read(mod ...

最新文章

  1. jQuery Mobile的学习时间bottonbutton的事件学习
  2. 【HIMI转载推荐之三】新手教程之如何向APP STORE提交应用
  3. WireShark抓浏览器的https包
  4. jsonp跨域读取cookie
  5. POJ1958-Strange Towers of Hanoi【递推】
  6. 分享:利用tcp_wrappers 保护服务安全
  7. oracle获取用户名,Oracle 用户名详解
  8. 免费网站推广,网站推广的方法
  9. php获取汉字拼音首字母的方法
  10. aspen稳态导出动态_Aspen Dynamics在控制中的应用
  11. TIA protal与SCL从入门到精通(2)——EN/ENO 机制
  12. java List复制:浅拷贝与深拷贝
  13. HTML之FrameSet,Frame和Iframe区别
  14. 填写运算符判断等式是否成立
  15. Science:前额叶皮层在哺乳动物上的解剖学异同
  16. 【老生谈算法】matlab实现匈牙利算法源码——匈牙利算法
  17. 网上涉廉政网络舆情信息工作怎么做的平台服务方案
  18. 分布式文件存储:Google File System 浅析
  19. 解决驱动器中没有磁盘的问题
  20. Unity中文界面整理

热门文章

  1. python(六)动态网页爬虫
  2. ESXi8.0中NVME硬盘不识别解决方法1,设置直通
  3. 立体视觉入门指南(6):对级约束与Fusiello法极线校正
  4. 小笨狼的LLDB技巧:chisel
  5. 软件项目管理三国启示录01 群雄争霸之项目经理的自我修养
  6. ad19怎么手动布线_AD18/19自动布线之坑
  7. Android左右声道的控制
  8. python turtle库画画
  9. 选股策略你都会吗,这些选股策略你看懂了吗?
  10. 答读者问总结 微信群欢迎你