socket.IO 问题,找遍所有群,搜了几个小时也没有找到一个人能解答的,求高手解答!!!1
发布于 10 年前 作者 flftfqwxf 3968 次浏览 最后一次编辑是 8 年前 来自 问答

官网上有一个这样的示例(http://socket.io/docs/):

222.png

此处,说明是会创建一个http请求,但是我没明白,这个请求创建了之后,要怎么访问呢,我看代码engine.io.js里,有这样一段代码:

	 function listen(port, options, fn) {
	if (‘function’ == typeof options) {
	fn = options;
	options = {};
	}
	
	var server = http.createServer(function (req, res) {
		res.writeHead(501);
		res.end('Not Implemented');
	});
	
	server.listen(port, fn);
	
	// create engine server
	var engine = exports.attach(server, options);
	engine.httpServer = server;
	
	return engine;
	};

创建的一个501请求,但是这样创建的一个,用什么方法可以访问呢?? 还有就是如果才能触发 connection事件呢?? 一直没搞明白这两个问题

按我的理解是,创建了一个HTTP服务,然后通过浏览器去访问,然后再通过客户端的 **var socket = io(‘http://localhost’);**来建立长链接,然后触发后端的 io.on('connection’, function (socket) { console.log(4); socket.emit('news’, { hello: ‘world’ }); socket.on('my other event’, function (data) { console.log(data); }); }); 但是,最上面的代码,不清楚在哪个地方可以触发事件,并且怎么访问建立的HTTP服务!请知道的解答一下,谢谢

4 回复

示例代码一个是sever端的一个是client: sever端监听80端口 建立了两个频道 chat 和news ,在

on('connection',function(socket){
//do with socket fn eg:socket.emit('event','data');
});

中可以 通过socket.emit(‘evnet’,‘data’);触发事件,这时候客户端socket.on(‘event’,function(data){//do with the data})就可以接收到了。 分别用node server , node client 测试就清楚了

@dayuoba 问题是 client怎么访问??在这个例子中,创建的监听,根本没有访问入口啊

如果想通过web页面测试的话需要使用express框架,或者自行写http服务器 监听并渲染页面 https://github.com/erickrdch/demo-chat 这里有个demo-chat可以自己研究一下

git clone https://github.com/erickrdch/demo-chat
cd demo-chat
sudo npm install
node app

访问localhost:3000就可以用了 注意需要安装mongodb

@flftfqwxf client端访问就是 io.connect(‘http://localhost/chat’) //本机,80端口 在连接成功会触发connect事件,然后在连接成功后发送对应的数据给服务器就可以了

回到顶部