環境: 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 [email protected]
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.
+ [email protected]
added 1 package in 7.79s
C:\Users\Administrator>
3.4 執行js客戶端
服務端顯示 :
完成 .