❶ nodejs 为什么不支持canvas
很明显不支持,你的是PHP空间。
❷ 怎么学习nodejs websocket
NodeJS貌似在一直升温。的确,从去年就一直开始关注NodeJS了,那个时候还是吴玺喆同学和我谈起这个事情~~~回头我就算变扫了一下,无非就是在服务器端运行的JS而已。使用javaScript作为指令调用底层的C++,这个思维模式还是挺不错的,并且在服务器端执行的效果也非常理想。那个时候想养肥了再看看,结果不到半年时间NodeJs已经有了飞速的发展,各方面的组件,各方面的社区文章介绍都已经非常全面了。NodeJS并且已经退出了Windows版本的安装程序。极大的方便了开发者(之前是在Ubuntu环境下部署的)。
webSocket 是一个非常不错特性,与其说是Html5的功能,不如说是浏览器支持的功能。Html5只是一个规范草案,添加了canvas,header,footer,nav,silder等一系列更加优化的语义标签,而Geolocation,webSocket,localStore等都是浏览器厂商支持的结果。(概念不要混淆哦)正好趁着去学习的时间,做了一个NodeJS与webSocket的小例子。拿出来和各位共享一下。
webSocket 是 Html5 的一种新的协议。它实现了浏览器与服务器的双向通讯。webSocket API 中,浏览器和服务器端只需要通过一个握手的动作,便能形成浏览器与客户端之间的快速双向通道,使得数据可以快速的双向传播。
通过一次简单的握手,建立了客户端和服务器端的联系之后,服务器便可以主动推送信息给客户端,而不需要客户端的反复轮询请求。在之前已经有谷歌的工程师尝试使用iframe来实现次功能,具体细节这里就不谈了,请各位自行谷歌。
webSocket 服务器商用已经很多了,这里不用 php,java 而是使用最近热得发烫的 NodeJs 来作为案例解析。
安装了NodeJS之后,我们可以通过一行简单的插件命令来安装 socket 模块。
npm install socket
然后引入包和启动服务器代码。
var http = require('http'),
io = require('socket.io'),
fs = require('fs');
//配置
var config = {
port : 8888
}
//创建服务器,监听端口。
http = http.createServer(handler);
http.listen(config.port);
//创建webscoket监听服务器
io = io.listen(http);
function handler(req, res) {
fs.readFile(__dirname+'/client.html',
function(err, data){
req.setEncoding(encoding="utf8");
res.writeHead(200);
res.end(data);
});
}
io.sockets.on('connection',function(socket){
//定义事件
socket.on('msg',function(data){
socket.broadcast.emit('user message',data);
});
});
然后我们来编写我们的客户端
<script src="http://192.168.39.154:8888/socket.io/socket.io.js"></script>
<script type="text/javascript">
var socket = io.connect('http://192.168.39.154:8888/');
//Comet
socket.on('user message', function(msg) {
msgbox(msg.msg);
});
//发送消息
function sendMsg() {
var inpt = document.getElementById('txtInput');
var str = inpt.value;
if(str.length==0){
inpt.className="error";
alert("请输入发送的消息内容");
return false;
}
inpt.className = "";
msgbox(str);
//发送消息至服务器的Scoket。
socket.emit('msg', {
msg : str
});
console.log('[client]' + str);
inpt.value = "";
inpt.focus();
}
以上就是核心源代码。
❸ node 安装 canvas不成功
重新下载在安装下试试,可能是安装位置错了,或者是安装包的问题