app.js
var sockect = require('./socket/server') var users = require('../router/users') app.use('/users', users); //路由 var server = app.listen(9000, function () { console.log('server start'); }); sockect(server); //启动socket
server.js
'use strict'; module.exports = function(server) { var io = require('socket.io').listen(server); io.sockets.on('connection', function (socket) { //如何将这里的socket暴露给其他地方的js方法里使用socket.emit ? }); return io; };
上面是我目前的结构,希望在users里面的逻辑里触发emit方法,google了很多,也没有找到有什么办法可以将参数socket传递出去,不然的话所有逻辑只要涉及到socket.emit的都要写在connection的回调里..
<table width="160" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td width="165" height="32"><img src="images/tell_top.gif" width="165" height="32" border="0"></td> </tr> <tr> <td height="52" background="images/tell_center.gif"> <?php include_once("function.php"); $news="明日编程词典上市了!"; $i=1; do{ ?> <table with="148" height="25" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td width="17" height="20"><img src="images/mark_0.gif" width="0" height="10"></td> <td width="333"> <?php echo chinesesubstr($news, 0, 18); if(strlen($nes)>18){ echo "..."; } ?> </td> </tr> <tr> <td height="5"></td> <td height="5" background="images/back_point_write.gif"></td> </tr> </table> <?php $i++; }while($i<=5); ?> </td> </tr> <tr> <td width="165" height="12"><img src="images/tell_bottom.gif" width="165" height="12"></td> </tr> </table>
同求解,怎么把那个socket对象暴露出去????
我也觉得外部调用socket
没什么意义。。
而且express
和socket
两者走的协议都不一样,
你可以把user
的身份信息保存在 局部变量socket
的作用域内
通过标识信息来执行相应用户的操作
我也遇到这个问题,求解
server.js文件中:
var users = require('../router/users') module.exports = function(server) { var io = require('socket.io').listen(server); io.sockets.on('connection', function (socket) { //如何将这里的socket暴露给其他地方的js方法里使用socket.emit ? users.doSomething(socket); }); return io; };
然后在users.js写业务逻辑