我使用 node.js + express + socket.io 在从套接字接收信号后做一些 ajax 事件,有时它工作但有时当同时有多个浏览器请求时失败。这是我的编码:
服务器:
var express = require('express'),
app = express(),
server = require('http').createServer(app),
io = require('socket.io').listen(server);
server.listen(4000);
io.sockets.on('connection', function(socket){
socket.on('send message', function(data){
io.sockets.emit('new message', data);
});
});
客户:
<script type="text/javascript">
var socket = io.connect();
jQuery(function($){
socket.on('new message', function(data){
if(data=='refreshNow'){
$.ajax({
type:"get",
dataType:"json",
url:"index.php?r=Ajax/TestBlankData",
success:function(data){
console.log('success');
},
error: function() {
console.log('error');
},
});
}
});
});
$( "#testing" ).click(function() {
socket.emit('send message', 'refreshNow');
});
</script>
ajax页面:
public function actionTestBlankData()
{
echo CJSON::encode(array());
}
安慰:
18 success
4 error
x GET http://localhost:5000/wwwroot/XHS/index.php?r=Ajax/TestBlankJson jquery.js:8434
send jquery.js:8434
jQuery.extend.ajax jquery.js:7986
(anonymous function) index.php:95
EventEmitter.emit socket.io.js:634
SocketNamespace.onPacket socket.io.js:2249
Socket.onPacket socket.io.js:1931
Transport.onPacket socket.io.js:1333
Transport.onData socket.io.js:1304
websocket.onmessage socket.io.js:2379