环境: win7 ,visual studio 2013 ,zeroc 3.6.1 ,node.js v8.11.1 ,webstorm 2016.2.4
第一步:
安装vs(i tell you 网站下载),zeroc 3.6.1 (官网) ,node.js (官网),webstorm 百度下容易找
如果访问官网的时间出现下载不了的情况可能是网络访问限制,考虑购买收费VPN翻墙
第二步:
用vs 布署c++的服务端,VS记得下边的两个配置
2.1 用slice2cpp 映射.ice文件
#Printer.ice文件内容
module Demo {
interface Printer {
void printString(string s);
};
};
执行命令: slice2cpp Printer.ice
2.2 生成服务端cpp,文件名无关自己定义,内容是按3.6.1 官档
#PrinterServer.cpp
#include <Ice/Ice.h>
#include "Printer.h"
using namespace std;
using namespace Demo;
class PrinterI : public Printer {
public:
virtual void printString(const string& s, const Ice::Current&);
};
void
PrinterI::
printString(const string& s, const Ice::Current&)
{
cout << s << endl;
}
int
main(int argc, char* argv[])
{
int status = 0;
Ice::CommunicatorPtr ic;
try {
ic = Ice::initialize(argc, argv);
Ice::ObjectAdapterPtr adapter =
ic->createObjectAdapterWithEndpoints("SimplePrinterAdapter", "default -p 10001");
Ice::ObjectPtr object = new PrinterI;
adapter->add(object, ic->stringToIdentity("SimplePrinter"));
adapter->activate();
std::cout << "==> server started" << std::endl;
ic->waitForShutdown();
}
catch (const Ice::Exception& e) {
cerr << e << endl;
status = 1;
}
catch (const char* msg) {
cerr << msg << endl;
status = 1;
}
if (ic) {
try {
ic->destroy();
}
catch (const Ice::Exception& e) {
cerr << e << endl;
status = 1;
}
}
return status;
}
重新生成方案即可生成exe文件:
第三步:js客户端生成
3.1 将上边的ice文件用slice2js执行下
3.2 Client.js文件
var Ice = require("ice").Ice;
var Demo = require("./Printer").Demo;
var ic;
Ice.Promise.try(
function()
{
ic = Ice.initialize();
var base = ic.stringToProxy("SimplePrinter:default -h 127.0.0.1 -p 10001");
return Demo.PrinterPrx.checkedCast(base).then(
function(printer)
{
return printer.printString("Hello World!");
});
}
).finally(
function()
{
if(ic)
{
return ic.destroy();
}
}
).exception(
function(ex)
{
console.log(ex.toString());
process.exit(1);
});
3.3 在webstorm 运和前记得执行下边的,否则会报找不到ice 模块的错误
C:\Users\Administrator>npm install ice@3.6.1
npm WARN saveError ENOENT: no such file or directory, open 'C:\Users\Administrat
or\package.json'
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN enoent ENOENT: no such file or directory, open 'C:\Users\Administrator\
package.json'
npm WARN Administrator No description
npm WARN Administrator No repository field.
npm WARN Administrator No README data
npm WARN Administrator No license field.
+ ice@3.6.1
added 1 package in 7.79s
C:\Users\Administrator>
3.4 执行js客户端
服务端显示 :
完成 .