2014-06-23 124 views
0

剛開始學的node.js多人功能:錯誤做socket.io聊天例如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 

一些時間更wiered無法處理或沒有定義這樣的方法等

在在下面的腳本的瀏覽器客戶端不能正常工作

<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 

做很多努力,我的後來回答共享兩個簡單的修復

回答

0

對於第一個錯誤,你將不得不使用socket.io的監聽方法,否則它不工作(當我跟着這個根據socket.io聊天的例子)

var io = require('socket.io').listen(http); 

第二次提示或問題,假設要工作,但不知爲何,你必須在io.connect方法

var socket = io.connect('http://localhost:8888'); 
2

定義URL我在這裏可以是關閉基地,因爲我仍然我自己學習節點,但在我看來,答案比目前接受的(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; 
    }); 
});