簡體   English   中英

執行socket.io聊天示例node.js時出錯

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM