刚开始学习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
经过大量的努力,我得到了两个在答案中分享的简单修复
答案 0 :(得分:2)
我可能不在这里,因为我自己还在学习节点,但在我看来,答案比目前接受的(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;
});
});
答案 1 :(得分:0)
对于第一个错误,你将不得不使用socket.io的listen方法,否则它不起作用(我根据socket.io聊天示例关注这个)
var io = require('socket.io').listen(http);
第二个提示或问题,假设工作但不知何故你必须在io.connect方法中定义url
var socket = io.connect('http://localhost:8888');