[英]Errors doing socket.io chat example node.js
剛開始學習node.js的多人游戲功能:
使用Windows 7,npm安裝node.js和組件,我遇到了幾個讓我發狂的問題
var io = require('socket.io')(http);
拋出錯誤:
D:\projects\node\chat\index.js:3
var io = require('socket.io').(http);
^
SyntaxError: Unexpected token (
at Module._compile (module.js:439:25)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:901:3
有時會更無法處理或未定義此類方法,等等。
在瀏覽器的客戶端中,以下腳本不起作用
<script>
var socket = io();
$('form').submit(function(){
socket.emit('chat message', $('#m').val());
$('#m').val('');
return false;
});
socket.on('chat message', function(msg){
$('#messages').append($('<li>').text(msg));
});
</script>
被拋出(不是錯誤),但顯示了您在網絡中執行的每個操作的消息:
debug - served static content /socket.io.js
經過大量的努力,我得出了兩個簡單的解決方案
我可能不在這里,因為我仍在學習節點本身,但是在我看來,答案比當前接受的答案(2014.7.21)更簡單。 你不應該有一個.
在require('socket.io')
和(http);
這表明,實際上是需要調用的構造函數時,這是require
返回的對象中的某種匿名函數。
它看起來應該像這樣:
var io = require('socket.io')(http);
我不確定您第二個問題的解決方案,因為我沒有遇到。 但是我確實發現我需要將jquery函數封裝在.ready()
,這是標准做法。 結果看起來像這樣:
var socket = io();
$(function () {
socket.on('chat message', function (msg) {
$('#messages').append($('<li>').text(msg));
});
$('#chatForm').submit(function () {
socket.emit('chat message', $('#m').val());
$('#m').val('');
return false;
});
});
對於第一個錯誤,您將不得不使用socket.io的listen方法,否則它將無法正常工作(根據我在socket.io聊天示例中所遵循的方法)
var io = require('socket.io').listen(http);
第二個提示或問題,應該可以正常工作,但必須以某種方式在io.connect方法中定義url
var socket = io.connect('http://localhost:8888');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.