❶ 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不成功
重新下載在安裝下試試,可能是安裝位置錯了,或者是安裝包的問題