1.安装ICE
下载window版本ice后常规安装
ICE3.6.3 链接:https://pan.baidu.com/s/1yGhm7sH52jZDMhXFaqb0Vw 提取码:48gj
2.配置环境变量
配置ICE_HOME和Path
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进行分布式通信-环境搭建