我的demo放在d:\projects\socket
下的,npm install socket.io
没问题,然后copy了socket.io
官网的简单例子:
<pre>
var server = require(‘http’).createServer();
var io = require(‘socket.io’)(server);
io.on(‘connection’, function(socket){
socket.on(‘event’, function(data){});
socket.on(‘disconnect’, function(){});
});
server.listen(3000);
</pre>
然后执行的时候,总是报Error: Cannot find module 'D:\projects\socket\test'
。没明白这个test
是哪儿来的。。。
你怎么启动程序的?
@garfieldzf8
以上代码保存为index.js
,然后我在d:\projects\socket
下,直接node index
的
堆栈信息发上来看看,里面应该有吧
奇怪的,还是同样的代码,现在没有报错,但是浏览器里输入http://localhost:3000
,页面就一直没反应,控制台也没任何信息输出
… 没错啊,你这个server 又没什么中间件,也没有处理 http 请求,就一空壳,哪会有什么反应!
$ express demo
$ cd demo
$ npm i
$ npm i socket.io --save
$ vi bin/www
在27行的位置,插入
var io = require('socket.io')(server);
io.on('connection', function(socket){
debug('Socket Client Connected');
socket.on('disconnect', function() {
debug('Socket Client Disconnected');
});
socket.on('echo', function(message) {
debug('Echo:', message);
socket.emit('message', message);
});
});
把 views/index.jade 改成:
extends layout
block content
h1= title
p Welcome to #{title}
pre(id='messages')
form(onsubmit='return send()')
input(type='text', id='content')
button 发送
script(type='text/javascript', src='/socket.io/socket.io.js')
script(type='text/javascript').
var socketClient = io();
var contenti = document.getElementById('content');
var messages = document.getElementById('messages');
socketClient.on('message', function(message) {
messages.innerHTML += '\n' + message.content;
});
function send() {
socketClient.emit('echo', { content: contenti.value });
contenti.value = '';
return false;
}
启动服务器:
$ DEBUG=demo:* bin/www
再试试
server.listen(3000,function(){ console.log(‘server begin…’); })
加上这句代码,看看服务器起来没?
我再试试,多谢大家
@klesh 之前我的例子,我在浏览器输入地址后按回车,浏览器的loading图标一直在转,停不下来,就算我在connection
监听函数里加console.log
,控制台也没任何输出的
原来如此,谢谢!我以为官网上最简单的示例会有点啥东西出来的