<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[BSER Binary Serialization]]></title><description><![CDATA[<p dir="auto">&lt;h2&gt;BSER Binary Serialization&lt;/h2&gt;</p>
<p dir="auto">&lt;p&gt;BSER is a binary serialization scheme that can be used as an alternative to JSON.&lt;/p&gt;<br />
&lt;p&gt;BSER uses a framed encoding that makes it simpler to use to stream a sequence of&lt;/p&gt;<br />
&lt;p&gt;encoded values.&lt;/p&gt;</p>
<p dir="auto">&lt;p&gt;It is intended to be used for local-IPC only and strings are represented as binary&lt;/p&gt;<br />
&lt;p&gt;with no specific encoding; this matches the convention employed by most operating&lt;/p&gt;<br />
&lt;p&gt;system filename storage.&lt;/p&gt;</p>
<p dir="auto">&lt;p&gt;For more details about the serialization scheme see&lt;/p&gt;<br />
&lt;p&gt;&lt;a href="<a href="https://facebook.github.io/watchman/docs/bser.html" rel="nofollow ugc">https://facebook.github.io/watchman/docs/bser.html</a>"&gt;Watchman's docs&lt;/a&gt;.&lt;/p&gt;</p>
<p dir="auto">&lt;h3&gt;API&lt;/h3&gt;</p>
<p dir="auto">&lt;pre&gt;&lt;code&gt;<br />
var bser = require('bser');<br />
&lt;/code&gt;&lt;/pre&gt;</p>
<p dir="auto">&lt;h4&gt;bser.loadFromBuffer&lt;/h4&gt;</p>
<p dir="auto">&lt;p&gt;The is the synchronous decoder; given an input string or buffer,&lt;/p&gt;<br />
&lt;p&gt;decodes a single value and returns it.  Throws an error if the&lt;/p&gt;<br />
&lt;p&gt;input is invalid.&lt;/p&gt;</p>
<p dir="auto">&lt;pre&gt;&lt;code&gt;<br />
var obj = bser.loadFromBuffer(buf);<br />
&lt;/code&gt;&lt;/pre&gt;</p>
<p dir="auto">&lt;h4&gt;bser.dumpToBuffer&lt;/h4&gt;</p>
<p dir="auto">&lt;p&gt;Synchronously encodes a value as BSER.&lt;/p&gt;</p>
<p dir="auto">&lt;pre&gt;&lt;code&gt;<br />
var encoded = bser.dumpToBuffer(['hello']);<br />
console.log(bser.loadFromBuffer(encoded)); // ['hello']<br />
&lt;/code&gt;&lt;/pre&gt;</p>
<p dir="auto">&lt;h4&gt;BunserBuf&lt;/h4&gt;</p>
<p dir="auto">&lt;p&gt;The asynchronous decoder API is implemented in the BunserBuf object.&lt;/p&gt;<br />
&lt;p&gt;You may incrementally append data to this object and it will emit the&lt;/p&gt;<br />
&lt;p&gt;decoded values via its &lt;code&gt;value&lt;/code&gt; event.&lt;/p&gt;</p>
<p dir="auto">&lt;pre&gt;&lt;code&gt;<br />
var bunser = new bser.BunserBuf();</p>
<p dir="auto">bunser.on('value', function(obj) {<br />
console.log(obj);<br />
});<br />
&lt;/code&gt;&lt;/pre&gt;</p>
<p dir="auto">&lt;p&gt;Then in your socket &lt;code&gt;data&lt;/code&gt; event:&lt;/p&gt;</p>
<p dir="auto">&lt;pre&gt;&lt;code&gt;<br />
bunser.append(buf);<br />
&lt;/code&gt;&lt;/pre&gt;</p>
<p dir="auto">&lt;h3&gt;Example&lt;/h3&gt;</p>
<p dir="auto">&lt;p&gt;Read BSER from socket:&lt;/p&gt;</p>
<p dir="auto">&lt;pre&gt;&lt;code&gt;<br />
var bunser = new bser.BunserBuf();</p>
<p dir="auto">bunser.on('value', function(obj) {<br />
console.log('data from socket', obj);<br />
});</p>
<p dir="auto">var socket = net.connect('/socket');</p>
<p dir="auto">socket.on('data', function(buf) {<br />
bunser.append(buf);<br />
});<br />
&lt;/code&gt;&lt;/pre&gt;</p>
<p dir="auto">&lt;p&gt;Write BSER to socket:&lt;/p&gt;</p>
<p dir="auto">&lt;pre&gt;&lt;code&gt;<br />
socket.write(bser.dumpToBuffer(obj));<br />
&lt;/code&gt;&lt;/pre&gt;</p>
<p dir="auto">&lt;hr&gt;</p>
<p dir="auto">&lt;p&gt;本文由模极社发布&lt;/p&gt;</p>
<p dir="auto">&lt;h4&gt;<img src="https://forum.mj7.cn/assets/plugins/nodebb-plugin-emoji/emoji/android/1f4cb.png?v=k0o2a4s5i30" class="not-responsive emoji emoji-android emoji--clipboard" title=":clipboard:" alt="📋" /> 内容概览&lt;/h4&gt;</p>
<p dir="auto">&lt;table&gt;<br />
&lt;tr&gt;&lt;td&gt;分类&lt;/td&gt;&lt;td&gt;要点&lt;/td&gt;&lt;td&gt;建议/说明&lt;/td&gt;&lt;/tr&gt;<br />
&lt;tr&gt;&lt;td&gt;核心概念&lt;/td&gt;&lt;td&gt;BSER Binary Serializ&lt;/td&gt;&lt;td&gt;详见正文&lt;/td&gt;&lt;/tr&gt;<br />
&lt;tr&gt;&lt;td&gt;操作步骤&lt;/td&gt;&lt;td&gt;BSER Binary Serializ&lt;/td&gt;&lt;td&gt;详见正文&lt;/td&gt;&lt;/tr&gt;<br />
&lt;tr&gt;&lt;td&gt;注意事项&lt;/td&gt;&lt;td&gt;BSER Binary Serializ&lt;/td&gt;&lt;td&gt;详见正文&lt;/td&gt;&lt;/tr&gt;<br />
&lt;tr&gt;&lt;td&gt;适用场景&lt;/td&gt;&lt;td&gt;BSER Binary Serializ&lt;/td&gt;&lt;td&gt;详见正文&lt;/td&gt;&lt;/tr&gt;<br />
&lt;tr&gt;&lt;td&gt;常见问题&lt;/td&gt;&lt;td&gt;BSER Binary Serializ&lt;/td&gt;&lt;td&gt;详见正文&lt;/td&gt;&lt;/tr&gt;<br />
&lt;/table&gt;</p>
<p dir="auto">&lt;hr&gt;<br />
&lt;h4&gt;<img src="https://forum.mj7.cn/assets/plugins/nodebb-plugin-emoji/emoji/android/1f517.png?v=k0o2a4s5i30" class="not-responsive emoji emoji-android emoji--link" title=":link:" alt="🔗" /> 你可能还感兴趣&lt;/h4&gt;<br />
&lt;ul&gt;<br />
&lt;li&gt;&lt;a href="/t/3750/3750"&gt;典型卫浴产品模具选型案例集&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a href="/t/3828/3828"&gt;Amaplast（意大利塑料橡胶加工机械和模具制造行业组织）&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a href="/t/4361/4361"&gt;inflight&lt;/a&gt;&lt;/li&gt;<br />
&lt;/ul&gt;</p>
<p dir="auto">&lt;hr&gt;<br />
&lt;p&gt;&lt;strong&gt;相关推荐：&lt;/strong&gt;&lt;/p&gt;<br />
&lt;ul&gt;<br />
&lt;li&gt;&lt;a href="<a href="https://www.mj7.cn/t/4836-4836" rel="nofollow ugc">https://www.mj7.cn/t/4836-4836</a>"&gt;北京模具产业 — 科技研发驱动型模具基地&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a href="<a href="https://www.mj7.cn/t/4835-4835" rel="nofollow ugc">https://www.mj7.cn/t/4835-4835</a>"&gt;上海模具产业 — 高端精密模具研发中心&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a href="<a href="https://www.mj7.cn/t/4834-4834" rel="nofollow ugc">https://www.mj7.cn/t/4834-4834</a>"&gt;产业集群与模具产业发展的关系&lt;/a&gt;&lt;/li&gt;<br />
&lt;/ul&gt;</p>
<p dir="auto">&lt;hr&gt;<br />
&lt;p&gt;各位师傅觉得这个方案怎么样？有更好的做法吗？&lt;/p&gt;</p>
]]></description><link>https://forum.mj7.cn/topic/7181/bser-binary-serialization</link><generator>RSS for Node</generator><lastBuildDate>Fri, 02 Oct 2026 10:19:20 GMT</lastBuildDate><atom:link href="https://forum.mj7.cn/topic/7181.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 19 Apr 2026 21:48:20 GMT</pubDate><ttl>60</ttl></channel></rss>