请教一个问题,我用VC调用JS,
我用的是WEBSOCKET长连接,我第1次调用SendData,会收到1个返回data, 第2次用,却会收到2个返回(正确的应该只有1个),第3次收到3个返回。。。
这个HTML在浏览器中使用是正常的,而我用VC调用的时候就不正常了,这是为什么?
JS代码:
//接收服务器返回值
socket.on('message', function(data){alert(data);};
//发送数据
function SendData(str){
socket.send(str.toString());}
VC代码
bool execJavascript2(const CComPtr spDocument2,
wstring wsFuncName)
{
HRESULT hr = S_FALSE;
CComPtr pScript;
hr = spDocument2-> get_Script(&pScript);
if (FAILED(hr))
{
return false;
}
//(2)Get Javascript Function
CComBSTR pCComBSTR(wsFuncName.c_str());
DISPID pDISPID;
hr = pScript->GetIDsOfNames(IID_NULL, &pCComBSTR, 1, LOCALE_SYSTEM_DEFAULT, &pDISPID);
if (FAILED(hr))
{
return false;
}
//(3)Add Parameters
DISPPARAMS pDISPPARAMS;
memset(&pDISPPARAMS, 0, sizeof(pDISPPARAMS));
CComVariant var1 = L"execJavascript2 hyb";
int nParamCnt = 1;
VARIANT* pParams = new VARIANT[nParamCnt];
for (int i = 0 ; i < nParamCnt ; i++)
{
pParams[i] = var1;
}
//Params Count
pDISPPARAMS.cArgs = nParamCnt;
//Params Array
pDISPPARAMS.rgvarg = pParams;
//Name Args Count
pDISPPARAMS.cNamedArgs = 0;
//(4)Invoke Javascript Method
EXCEPINFO pEXCEPINFO;
memset(&pEXCEPINFO, 0, sizeof(pEXCEPINFO));
CComVariant pCComVariant;
//Initialize to invalid arg
UINT nintArgErr = (UINT)-1;
hr = pScript->Invoke(pDISPID, IID_NULL, 0, DISPATCH_METHOD, &pDISPPARAMS, &pCComVariant, &pEXCEPINFO, &nintArgErr);
delete[] pDISPPARAMS.rgvarg;
pScript.Release();
if(FAILED(hr))
return false;
return true;
}