我试图使用socket.io实时发送数据,以便创建服务器:
const http = require('http').createServer();
const socket = require('socket.io')(http);
socket.on('connection', socket => {
console.log('connected:', socket.client.id);
socket.on('start', data => {
console.log('new message from client:', data);
});
socket.on("disconnect", () => console.log("Client disconnected"));
});
http.listen(3000, () => console.log(`server listening on port: ${3000}`))
在客户端,我创建此脚本:
const socket = require('socket.io-client')('http://localhost:3000');
socket.on('connect', () => {
// socket connected
socket.emit('start', { my: 'data' });
setInterval(() => {
socket.disconnect();
}, 1000);
});
想像一下,客户端连接到服务器并将数据发送到服务器后要与服务器断开连接,所以我输入以下命令:
setInterval(() => {
socket.disconnect();
}, 1000);
执行此命令时出现此错误:
D:\Projects\NodeJs\SafaProjects\socket\client>node client.js
D:\Projects\NodeJs\SafaProjects\socket\client\node_modules\socket.io-client\lib\socket.js:136
Socket.prototype.emit = function (ev) {
^
RangeError: Maximum call stack size exceeded
at Socket.emit (D:\Projects\NodeJs\SafaProjects\socket\client\node_modules\socket.io-client\lib\socket.js:136:34)
at Socket.socket.on (D:\Projects\NodeJs\SafaProjects\socket\client\client.js:13:12)
at Socket.Emitter.emit (D:\Projects\NodeJs\SafaProjects\socket\client\node_modules\component-emitter\index.js:133:20)
at Socket.emit (D:\Projects\NodeJs\SafaProjects\socket\client\node_modules\socket.io-client\lib\socket.js:138:10)
at Socket.socket.on (D:\Projects\NodeJs\SafaProjects\socket\client\client.js:13:12)
at Socket.Emitter.emit (D:\Projects\NodeJs\SafaProjects\socket\client\node_modules\component-emitter\index.js:133:20)
at Socket.emit (D:\Projects\NodeJs\SafaProjects\socket\client\node_modules\socket.io-client\lib\socket.js:138:10)
at Socket.socket.on (D:\Projects\NodeJs\SafaProjects\socket\client\client.js:13:12)
at Socket.Emitter.emit (D:\Projects\NodeJs\SafaProjects\socket\client\node_modules\component-emitter\index.js:133:20)
at Socket.emit (D:\Projects\NodeJs\SafaProjects\socket\client\node_modules\socket.io-client\lib\socket.js:138:10)
客户端如何正确连接服务器?
答案 0 :(得分:1)
因为您再次致电 DECLARE @test nvarchar(180)
DECLARE @prno nvarchar(50)
DECLARE @dte date
DECLARE @tst nvarchar(180)
DECLARE cr_testd CURSOR FOR
SELECT cust_id,pr_no,date
FROM tbl_Test_Details;
DECLARE cr_tests CURSOR FOR
SELECT test_name
FROM tbl_tests
OPEN cr_testd
FETCH NEXT FROM cr_testd into @cid,@prno,@dte
OPEN cr_tests
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM cr_tests into @tst
WHILE @@FETCH_STATUS=0
BEGIN
Insert into tbl_Test_Details values(@cid,@tst,@prno,@dte)
IF (@@ROWCOUNT <= 0)
BEGIN
BREAK
END
FETCH NEXT FROM cr_tests into @tst
END
FETCH NEXT FROM cr_tests into @tst
END
CLOSE cr_test
DEALLOCATE cr_test```
Current State of Tables
Tbl_Test_details Tbl_Tests
|--------------------| |-----------|
|pr_no c_id Tests | | Tests |
|--------------------| |-----------|
|1 100 MDD | | MDD |
|1 100 FDT | | FDT |
|2 101 DMC | | DMC |
| CDD |
Result Table
tbl_test_details
|--------------------|
|pr_no c_id Tests |
|--------------------|
|1 100 MDD |
|1 100 FDT |
|1 100 DMC |
|1 100 CDD |
|2 101 MDD |
|2 101 FDT |
|2 101 DMC |
|2 101 CDD |
。为socket.disconnect()
提供一个回调函数,您可以在其中调用socket.emit()
。
socket.disconnect
const http = require('http').createServer();
const socket = require('socket.io')(http);
socket.on('connection', socket => {
console.log('connected:', socket.client.id);
socket.on('start', data => {
console.log('new message from client:', data);
socket.emit ('messageSuccess', data);
});
socket.on("disconnect", () => console.log("Client disconnected"));
});
http.listen(3000, () => console.log(`server listening on port: ${3000}`))