Nodejs使用ICE进行分布式通信

1.安装ICE

下载window版本ice后常规安装
ICE3.6.3 链接:https://pan.baidu.com/s/1yGhm7sH52jZDMhXFaqb0Vw 提取码:48gj

2.配置环境变量

配置ICE_HOMEPath

ICE_HOME: D:\Program Files (x86)\ZeroC\Ice-3.6.3
在这里插入图片描述
Path: %ICE_HOME%/bin;
在这里插入图片描述

3.在命令行查看

输入slice2js -v 查看版本
在这里插入图片描述

4.node安装ice包

npm install ice@3.6.3

5.准备Order.ice文件

该文件为后端提供,放在项目根目录,以下为Order.ice文件内容

[["java:package:com.jimi.test"]]
module ticket {

	exception TestException
	{
    string code;
    string msg;
    };
	
	/**
	 * 订单信息
	 */
	struct Order {
		/**
		 * 订单号
		 */
		long orderId;
		// 手机号
		string phone;
		string orderNum;
		long orderDate;
		int ticketType;
		double amount;
		int orderStatus;
	};

	sequence<Order> orderSeq;
	
	/**订单业务类*/
	interface OrderService {
		/**创建订单
		@param  myOrder 订单信息
		@return */
		bool createOrder(Order myOrder) throws TestException;
		orderSeq queryByPhone(string phone);
		bool cannelOrder(long orderId) throws TestException;
	};
};

module sms {
	interface SMSService {
		void sendSmsMsg(string msg);
	};
};

6.把ice文件编译成js文件

执行slice2js Order.ice命令,生成Order.js

slice2js Order.ice

8.下载long插件

由于后端用到了long类型的数据,nodejs需要用插件把部分数据转换成long类型

npm install long

7.编写client.js服务

const Ice = require('ice').Ice;
const Long = require('long');
const order = require('./Order');

let ic;
Ice.Promise.try(() => {
    ic = Ice.initialize();

    const base = ic.stringToProxy('ticketOrderIce:default -h 172.16.0.8 -p 11000');

    return order.ticket.OrderServicePrx.checkedCast(base)
        .then(resolve => {
            const data = {
                orderId: '1152921517493863811',
                phone: '14787878',
                orderNum: '00001',
                orderDate: '888888888',
                ticketType: 1,
                amount: 3.45,
                orderStatus: 1
            };

            const ord = new order.ticket.Order();
            ord.orderId = Long.fromString(data.orderId, true);
            ord.phone = data.phone;
            ord.orderNum = data.orderNum;
            ord.orderDate = Long.fromString(data.orderDate, true);
            ord.ticketType = data.ticketType;
            ord.amount = data.amount;
            ord.orderStatus = data.orderStatus;
            return resolve.createOrder(ord);
        })
        .then(resolve => {
            console.log(resolve); //输出结果
        });
})
.finally(() => {
     if (ic) {
         return ic.destroy();
     }
 })
 .exception(ex => {
     console.log(ex.toString());
     ProcessingInstruction.exit(1);
 });

8.运行client.js就可以与后端调试了

参考资料:
ICE-NODEJS NODE.JS使用ICE进行分布式通信-环境搭建

ICE-NODEJS SLICE to JavaScript 客户端操作

Add Javascript to ZeroC Ice

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值