让socket.io在Windows 7 x64位平台上运行

在Express 3.x上安装Windows 7 x64位环境下的socket.io包让我非常辛苦。

我不得不解决数十或编译错误,我不得不安装下面的Windows 7包安装过程输出没有错误:

  • Cygwin C ++编译器
  • Cygin C ++额外库
  • Microsoft Visual Studio 2010 Express
  • Microsoft .NET Framework v2.0
  • Microsoft性能工具包Microsoft Windows SDK 7.1
  • Microsoft Visual C ++ 2010 SP1编译器更新为Windows SDK 7.1。

(Visual Studio编译器给我一个警告C4267(见下文))

尽pipe安装正确,我仍然有客户端错误:

Error: io is not defined var socket = io.connect('/'); 

我遵循了socket.io.js的build议,由具有app.js的nodejs服务器提供服务:

 var express = require('express') , http = require('http'); var app = express(); var server = http.createServer(app); var io = require('socket.io').listen(server); 

玉档中的客户端偏差是:

 script(src='/socket.io/socket.io.js') 

而我的socket.io的客户端脚本部分是:

 var socket = io.connect('/'); 

socket.io被安装到node-login目录中,该目录位于我的app/publicapp/server目录中。

socket.io安装日志:

 D:\dev\node-login>npm install socket.io npm http GET https://registry.npmjs.org/socket.io npm http 304 https://registry.npmjs.org/socket.io npm http GET https://registry.npmjs.org/socket.io-client/0.9.11 npm http GET https://registry.npmjs.org/policyfile/0.0.4 npm http GET https://registry.npmjs.org/base64id/0.1.0 npm http GET https://registry.npmjs.org/redis/0.7.3 npm http 304 https://registry.npmjs.org/socket.io-client/0.9.11 npm http 304 https://registry.npmjs.org/base64id/0.1.0 npm http 304 https://registry.npmjs.org/policyfile/0.0.4 npm http 304 https://registry.npmjs.org/redis/0.7.3 npm http GET https://registry.npmjs.org/uglify-js/1.2.5 npm http GET https://registry.npmjs.org/ws npm http GET https://registry.npmjs.org/xmlhttprequest/1.4.2 npm http GET https://registry.npmjs.org/active-x-obfuscator/0.0.1 npm http 304 https://registry.npmjs.org/active-x-obfuscator/0.0.1 npm http 304 https://registry.npmjs.org/uglify-js/1.2.5 npm http 304 https://registry.npmjs.org/xmlhttprequest/1.4.2 npm http 304 https://registry.npmjs.org/ws npm http GET https://registry.npmjs.org/zeparser/0.0.5 npm http GET https://registry.npmjs.org/commander npm http GET https://registry.npmjs.org/options npm http 304 https://registry.npmjs.org/zeparser/0.0.5 npm http 304 https://registry.npmjs.org/commander npm http 304 https://registry.npmjs.org/options > ws@0.4.25 install D:\dev\node-login\node_modules\socket.io\node_modules\socket .io-client\node_modules\ws > (node-gyp rebuild 2> builderror.log) || (exit 0) D:\dev\node-login\node_modules\socket.io\node_modules\socket.io-client\node_modu les\ws>node "C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\no de_modules\node-gyp\bin\node-gyp.js" rebuild bufferutil.cc ..\src\bufferutil.cc(55): warning C4267: 'initializing' : conversion from 'size _t' to 'unsigned int', possible loss of data [D:\dev\node-login\node_modules\so cket.io\node_modules\socket.io-client\node_modules\ws\build\bufferutil.vcxproj] ..\src\bufferutil.cc(66): warning C4267: 'initializing' : conversion from 'size _t' to 'unsigned int', possible loss of data [D:\dev\node-login\node_modules\so cket.io\node_modules\socket.io-client\node_modules\ws\build\bufferutil.vcxproj] C:\Users\Vivaldi\.node-gyp\0.8.17\deps\v8\include\v8.h(183): warning C4506: no definition for inline function 'v8::Persistent<T> v8::Persistent<T>::New(v8::Ha ndle<T>)' [D:\dev\node-login\node_modules\socket.io\node_modules\socket.io-clie nt\node_modules\ws\build\bufferutil.vcxproj] with [ T=v8::Object ] Creating library D:\dev\node-login\node_modules\socket.io\node_modules\soc ket.io-client\node_modules\ws\build\Release\bufferutil.lib and object D:\dev\ node-login\node_modules\socket.io\node_modules\socket.io-client\node_modules\ ws\build\Release\bufferutil.exp Generating code Finished generating code bufferutil.vcxproj -> D:\dev\node-login\node_modules\socket.io\node_modules\s ocket.io-client\node_modules\ws\build\Release\\bufferutil.node validation.cc C:\Users\Vivaldi\.node-gyp\0.8.17\deps\v8\include\v8.h(183): warning C4506: no definition for inline function 'v8::Persistent<T> v8::Persistent<T>::New(v8::Ha ndle<T>)' [D:\dev\node-login\node_modules\socket.io\node_modules\socket.io-clie nt\node_modules\ws\build\validation.vcxproj] with [ T=v8::Object ] Creating library D:\dev\node-login\node_modules\socket.io\node_modules\soc ket.io-client\node_modules\ws\build\Release\validation.lib and object D:\dev\ node-login\node_modules\socket.io\node_modules\socket.io-client\node_modules\ ws\build\Release\validation.exp Generating code Finished generating code validation.vcxproj -> D:\dev\node-login\node_modules\socket.io\node_modules\s ocket.io-client\node_modules\ws\build\Release\\validation.node socket.io@0.9.13 node_modules\socket.io +-- base64id@0.1.0 +-- policyfile@0.0.4 +-- redis@0.7.3 +-- socket.io-client@0.9.11 (xmlhttprequest@1.4.2, uglify-js@1.2.5, active-x-obf uscator@0.0.1, ws@0.4.25) D:\dev\node-login> 

为什么客户端找不到socket.io.js?

在这里回答: https : //github.com/LearnBoost/socket.io/issues/944

改变这一点

 var server = http.createServer(app); 

进入这个

 var server = http.createServer(app).listen( 3000 ); 

另外我真的很惊讶,你有这样的痛苦来安装它。 我同意有更多的痛苦,以安装各种networking相关的东西,然后在Linux上,但节点和所有的软件包来与它不是其中之一。 至less我没有问题,安装简单,然后通过nmp进行软件包pipe理,就像在linux上一样简单。