我能够在我自己的服务器上运行基本的socket.io服务器应用程序,并通过任何Web浏览器直接请求它(我尝试了FF,chrome和IE7都可以工作).
现在,问题在于客户端示例代码对我不起作用,并且我在chrome的javascript控制台中收到以下错误:
"未捕获的ReferenceError:require未定义"引用socket.io.js中的这行代码:var client = require('socket.io-client');
这让我相信它无法识别需求命令周期,这似乎很奇怪.还有其他一些事情 - 我运行了apache,所以我将所有的socket.io文件移动到我的apache目录htdocs中,通过使用cygwin和指南安装的http端口80进行访问:https://github.com /joyent/node/wiki/Building-node.js-on-Cygwin-(Windows)
socket.io文件也安装在我的c:驱动器的windows下的cygwin目录下,如果被apache访问它们就没用了.另一个小问题 - 我有一个socket.io-client.js文件,但当我打开它使用wordpad进行编辑时,它看起来已损坏,内部只有一行文字:<symlink>ÿþi
Fuu*_*Fuu 27
require()函数是Node.js的一个特性,仅适用于在服务器端运行的Javascript.要在浏览器中包含文件,您必须使用常规方法:
<script src="/socket.io/socket.io.js"></script>
Run Code Online (Sandbox Code Playgroud)
Node.js通常以socket.io服务器附加到Web服务器实例的方式设置,该服务器也是Node.js服务器的一部分.直接从socket.io"如何使用"页面获取的代码示例,这将在服务器端:
var app = require('http').createServer(handler)
, io = require('socket.io').listen(app)
, fs = require('fs')
app.listen(80);
Run Code Online (Sandbox Code Playgroud)
如果按上述方式使用,Node.js也是服务于网页静态部分的服务器,Node.js服务器的地址是包含客户端脚本的参考.
另一个用例是当您的主Web服务器提供静态html并且您尝试连接到可能位于另一个地址或另一个端口或两者中的Node.js实例时.您的主Web服务器不提供Socket.io.js.它由Node.js服务器上运行的socket.io直接提供.您必须为客户端浏览器提供Node.js服务器地址以获取socket.io客户端Javascript文件,如下所示:
<script src="http://nodejs.address:port/socket.io/socket.io.js"></script>
<script>
var socket = io.connect('http://nodejs.address:port');
socket.on('news', function (data) {
console.log(data);
socket.emit('my other event', { my: 'data' });
});
</script>
Run Code Online (Sandbox Code Playgroud)
作为旁注,有客户端javascript库提供require()函数,在客户端检查Javascript需求
| 归档时间: |
|
| 查看次数: |
16225 次 |
| 最近记录: |