所以我做了npm install express
和npm install socket.io
,然后我将node_modules
个文件夹带到了server
我WAMP
的文件夹中。
将其用作server.js
:
var app = require('express').createServer();
var io = require('socket.io').listen(app);
io.sockets.on('connection', function (socket) {
console.log('Someone connected!');
socket.on('set nickname' , function (nickname) {
socket.nickname = nickname;
console.log(nickname + ' just connected!');
});
});
app.listen(8080);
并将其用作client.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<title>Untitled 4</title>
<script src="http://cdn.socket.io/stable/socket.io.js"></script>
<script>
var socket = io.connect('http://localhost:8080');
socket.on('connect', function () {
console.log('We are connected!');
var name = prompt('What is your name?');
this.emit('set namename', name, function (success) {
console.log('The server got the message!');
if (!success) {
console.log('Nickname is in use!');
}
});
});
</script>
</head>
<body>
</body>
</html>
我得到的错误是Uncaught TypeError: Object #<Object> has no method 'connect'
我知道我使用的不同于socket.io.js
因为我不知道从哪里获取/socket.io/socket.io.js
。我尝试了node_modules/socket.io/lib/socket.io.js
,这是我在node_modules
文件夹中找到的另一个,但事实并非如此。
我也开始了我的server
,我得到了socket.io started
,所以我知道这很有效。
答案 0 :(得分:5)
你得到的错误是因为socket.io脚本(到index.html)的来源是错误的。所以改变这个:
<script src="http://cdn.socket.io/stable/socket.io.js"></script>
在此:
<script src="http://localhost:3000/socket.io/socket.io.js"> </script>
是的,socket.io是根服务器目录中的一个文件夹,我的服务器端套接字正在侦听端口3000.