我有两个节点在不同的端口上运行socket.io。
我的代码包含脚本
<script type="text/javascript" src="//example.com:8080/socket.io/socket.io.js"></script>
<script type="text/javascript" src="//example.com:8081/socket.io/socket.io.js"></script>
创建两个服务
app.factory("socket", function(){
var socket = io.connect("http://example.com:8080");
return socket;
}).factory("socket2", function(){
var socket2 = io.connect("http://example.com:8081");
return socket2;
});
在某些控制器中我注入并尝试与它们进行通信。
app.controller('someCtrl', function($scope, socket, socket2,...
它适用于第一个但不适用于第二个。
第二个套接字正在工作,因为它实际上服务于其他一些客户端,但我无法从该套接字发出或接收。
为了测试制作了两个相同的节点,仍然无法连接到第二个节点。
我在这里做错了什么?
答案 0 :(得分:2)
您无需引用&#39; socket.io.js&#39;脚本两次,这可能会通过覆盖某些东西引起问题。试试看,看看它是否有效。
<script type="text/javascript" src="socket.io.js"></script>
<script type="text/javascript">
var socket1 = io.connect('http://127.0.0.1:3000');
var socket2 = io.connect('http://127.0.0.1:3001');
socket1.on('new message', function (data) {
console.log('1st server');
});
socket2.on('new message', function (data) {
console.log('2nd server');
});
</script>